Discord

Checklist VsOSh AI 2026 Regional Stage, Tour 2 (data analysis and machine learning) · D task

The Martian Archivist

Russian title: Марсианский Архивариус

Recover the true classes of crystals from 16-dimensional embeddings when many training labels are missing or given as unreliable candidate sets.

  • Tabular
  • Classification with partial and noisy labels
  • Russian original · English translation

The task

An ancient Martian AI stores a 16-dimensional embedding and one of 25 classes for each crystal, but its memory is damaged: for many crystals the class is lost, and for others only a set of possible classes survives, which may or may not contain the true class.

Using the embeddings, the correct labels for some crystals and the ambiguous candidate sets for others, the contestant must predict the class of every test crystal (each belongs to exactly one of the 25 classes).

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 3 files into English on 16 September 2026. Only the words changed in the notebooks: markdown, code comments, messages and printed output. The code, file names and paths are the original's, so a translated notebook runs with the original data.

Read the task statement in English 777 words

The Martian Archivist

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, Regional Stage, Grades 9–11
“Artificial Intelligence” profile, Tour 2, 19 January 2026
Task D

Points for the task: 100
Answer submission format: uploading an answer file in .csv format
Number of attempts: 20
Submission that counts: the last one

Statement

During the third year of the expedition to Valles Marineris on Mars, our acquaintance Andrey, an engineer and a specialist in extraterrestrial systems, came across something incredible: a perfectly preserved crystalline memory module hidden deep beneath the surface of the canyon.

When the module was carefully extracted and connected to power, it awakened an ancient Martian AI that called itself “Archivist Unit F”, the keeper of the knowledge of a vanished civilisation. The Archivist revealed that its memory holds extensive information about the crystals that the ancient Martians used in their laboratories and energy reactors.

Each crystal was described by an embedding: a vector of length 16 reflecting its structure, composition, resonance properties and many other characteristics that humans cannot yet interpret directly. Besides the embedding, the Archivist also stored the class (one of 25 possible), that is, the type or functional purpose of the crystal.

But over thousands of years under the Martian dust, the Archivist had been damaged.

For many crystals, the class information was lost completely.

For others, it was preserved only partially: instead of one exact class, the Archivist gave several possible options, sometimes reasonable and sometimes completely random. It seems that the data structures inside the module got mixed up, and no simple method of recovering the information works.

Andrey and his team are extremely interested in the ancient knowledge about Martian crystals: understanding their properties could lead to a breakthrough in energy-intensive technologies and materials science.

That is why they are turning to you.

Your task is to help the Archivist restore the true classes of those crystals whose information was lost or damaged. You will be given:

  • the embeddings of the crystals,
  • the correct classes for some of them,
  • ambiguous lists of possible classes for the others,
  • and also a set of crystals whose classes you have to predict.

Like the ancient AI, you will have to work under uncertainty and with incomplete information. However, modern machine learning methods offer a chance to recover a significant part of the lost knowledge, if they are applied carefully and inventively enough.

Input format

The following files are attached to the task:

  • train.csv - contains information about the crystals for which the true or possible labels are known. Fields:
    • id — the unique identifier of the object.
    • F{i}, where i{1,,16}i \in \{1, \dots, 16\} — the components of the embedding.
    • labels — the set of possible classes for this object (the true class may be among them, but it may also be absent).
  • test.csv — a file with the embeddings of the crystals whose classes must be predicted. It is guaranteed that each object belongs to exactly one of the 25 classes.
  • baseline.ipynb — a notebook with a baseline solution to the task.
  • submission.csv — an example of the solution that you need to submit to the testing system.

Output format

You need to submit, as your submission, the file submission.csv containing two columns:

  • id — the identifier of the object from test.csv.
  • class — the class label predicted by the model

Scoring

The maximum for the task is 100 points.

The test data are divided into a public and a private part.

After you submit a solution, the system shows the result on the public part.

The final result will be calculated on the private part after the contest ends. After the end of the stage, your metric will be converted to a 100-point scale according to the following rule:

  • the result of the baseline solution (Accuracy=0.2717) is worth 0 points;
  • the result of the author's solution (Accuracy=0.8) is worth 100 points;
  • results between these two points are distributed linearly.

Answer evaluation metric

This task uses the metric Accuracy. It is calculated as the fraction of objects in the test set whose class is predicted correctly.

Strict mathematical definition of the metric Accuracy:

Accuracy=number of correct answerstotal number of test crystals.\text{Accuracy} = \frac{\text{number of correct answers}}{\text{total number of test crystals}}.

Example of computing the Accuracy metric in Python:

from sklearn.metrics import accuracy_score

y_true = [0, 1, 2, 2, 1]
y_pred = [0, 2, 1, 2, 1]

acc = accuracy_score(y_true, y_pred)
print("Accuracy =", acc)

Translated by SOTA. The Russian original is the official version and wins wherever the two differ. The official editorial archive (https://yastatic.net/s3/contest/roi/2026/ml/day2/editorial.zip) contains the data as train_D.csv and test_D.csv, where the embedding columns are named f1 to f16 and the answer column in its reference files is label. 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
train.csv (id, F1–F16, labels = set of possible classes, which may not contain the true class), test.csv (id, F1–F16), baseline.ipynb, submission.csv (example).
You submit
submission.csv with columns id and class.
Scoring
Accuracy. The baseline (0.2717) gives 0 points and the author's solution (0.8) gives 100, linear in between. Scored on a private part of the test data after the contest (public part shown live); 20 attempts, the last one counts.
Format
Regional stage, Tour 2 (data analysis and machine learning), 19 January 2026; grades 9–11; individual; 300-minute tour (Moscow procedure); submissions in Yandex Contest.

Details

Year
2026, Regional venues across Russia (in person)
Round
Regional Stage, Tour 2 (data analysis and machine learning) · D task
Language
Russian; English translation by SOTA
License
Not stated by the source