Discord

Checklist VsOSh AI 2026 Final Stage, Tour 2 (practical) · B task

Seismically Active Island

Russian title: Сейсмоактивный остров

Group 240 shuffled seismic recordings into earthquakes, each represented by exactly eight recordings.

  • Time series
  • Clustering of multivariate time series
  • Russian original · English translation

The task

Each earthquake on the island of Terramotus was recorded by two stations, each with two instruments, and every record was transmitted over two channels (optical fibre and a wireless link that lost some time points). Each instrument logs 10 quantities every minute for 100 minutes, so every earthquake corresponds to exactly 8 observations.

An AI agent renamed all files, destroying the grouping. The contestant must cluster the observations so that records of the same earthquake fall into the same cluster.

Abridged and translated by SOTA from the official Russian materials. The official statement has the exact rules, and it wins wherever this summary differs.

In English

This task was published in Russian. SOTA translated its 4 files into English on 17 September 2026.

Read the task statement in English 752 words

Seismically Active Island

English translation by SOTA – AI Community of the Russian original. Organisers who would like this translation removed can email [email protected].

All-Russian School Olympiad in Informatics 2025–2026, Final Stage
“Artificial Intelligence” profile, Tour 2, Moscow, 25 March 2026
Task B

Statement

Researchers from a seismological monitoring centre are analysing records of earthquakes on the island of Terramotus. For each event, data were collected at two observation stations located at opposite ends of the island. Each station has two measuring instruments, placed in different parts of the station.

The data were transmitted from the station to the laboratory over two channels: a fibre-optic cable and a wireless link. But the wireless link suffered from interference, and some time points in the data were lost.

Each instrument records 10 quantities every minute for 100 minutes.

To speed up the analysis of the archive, the researchers brought in an AI agent. The researchers wrote the prompt carelessly and gave the agent too many permissions. Then, in the course of its work, the agent for some reason renamed all the files. After that, it became unclear to the researchers which records belong to the same earthquake: the files are mixed up, and the original grouping is lost. The researchers panicked, but then pulled themselves together and turned for help to Oleg, a school student and an expert in machine learning. Help him cluster the data and repair the consequences of uncontrolled experiments with AI.

It is known that each earthquake corresponds to exactly 8 observations: 2 instruments at each of the 2 stations, and 2 transmission methods for each. You need to work out which observations belong to the same earthquake.

Input format

The following files are attached to the task:

  • data_B.npy, containing an array of observations of size 240×10×100240 \times 10 \times 100: 240 observations of 10 values over 100 minutes.
  • baseline_B.ipynb: a notebook with a baseline solution of the task.
  • submission_B.csv: an example of the solution to be submitted to the testing system.

Output format

For checking, you must upload the archive solution_B.zip.

The archive must contain:

  1. The file submission_B.csv with two columns:
    • ID: the number of the observation in data_B.npy;
    • target: the predicted value of the target variable.
  2. The file solution_B.ipynb: a Jupyter Notebook with your solution.

You may add to the archive additional files needed for your solution to work. The archive must, however, contain exactly one file with the extension .csv and exactly one file with the extension .ipynb.

Scoring

You can get up to 60 points for this task.

The data are split into a public and a private part. When you submit submission_B.csv, you are shown the result on the public part. After the end of the stage, the result will be recomputed on the private part. The public and private parts do not overlap.

After the end of the stage, your metric will be converted to a 60-point scale according to the following rule:

  • the result of the baseline solution, with a value of ARI X\leq X, is scored 0 points;
  • a result with a value of ARI Y\geq Y is scored 60 points;
  • if the value of ARI lies between XX and YY, the number of points is computed by the linear interpolation formula:

Score=60ARIXYX.\text{Score} = 60 \cdot \frac{\text{ARI} - X}{Y - X}.

The metric values XX and YY will be available in the testing system.

The final score for the task is based on the last submission.

Metric for evaluating the accuracy of the answer

This task uses the ARI (Adjusted Rand Index) metric. The more pairs of objects the participant distributes over the clusters correctly (for example, if the two objects are in different clusters and the participant also assigns them to different clusters, OR the two objects are in the same cluster and the participant also assigns them to the same cluster), the higher this metric. ARI takes the value 0 for a random partition into clusters and the value 1 for a perfectly correct partition, and it can take negative values for a partition that is worse than random.

Example of computing the ARI metric in 'Python':

from sklearn.metrics import adjusted_rand_score

labels_true = [0, 0, 1, 1, 2, 2]
labels_pred = [1, 1, 0, 0, 2, 2]

ari = adjusted_rand_score(labels_true, labels_pred)
print("ARI =", ari)

Translated by SOTA. The Russian original is the official version and wins wherever the two differ. The data files and baseline_B.ipynb named in the statement are not included in the PDF. The official solution is the authors' notebook exported to PDF; it reads a y.csv answer file that participants do not have. If you organise this olympiad and would like the translation removed, email [email protected] and we will take it down.

At a glance

You get
data_B.npy: array of shape 240 × 10 × 100 (with missing values from the wireless channel); baseline_B.ipynb; submission_B.csv (example).
You submit
A zip archive with exactly one .csv (the predictions) and exactly one .ipynb (the solution notebook); additional files needed by the solution are allowed. The CSV is submission_B.csv with columns ID (index in data_B.npy) and target (cluster).
Scoring
Adjusted Rand index (ARI). After the stage the metric is mapped to 0–60 points: the baseline value X or worse gives 0, Y or better gives 60, linear in between (Score = 60·(m − X)/(Y − X)); X and Y were shown in the testing system. Scored on a private part of the test set; the last submission counts. Maximum 60 points.
Format
Final stage, Tour 2 (practical), Moscow, 25 March 2026; grades 9–11; individual; submissions to an online testing system.

Details

Year
2026, Moscow, Russia
Round
Final Stage, Tour 2 (practical) · B task
Language
Russian; English translation by SOTA
License
Not stated by the source