Discord

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

Humanity's Heritage

Russian title: Наследие Человечества

Re-pair the shuffled left and right halves of Russian poems using a supplied language model.

  • NLP
  • Text matching (bipartite pairing)
  • Russian original · English translation

The task

Motivated by the reading of the carbonised Herculaneum papyri, Vadim wants to restore the order of text fragments and first tries an analogous Russian-language problem. From a collection of poems, some poems are kept whole (training data); every other poem is split into a left and a right part, and all parts are shuffled.

The contestant must restore the original (left, right) pairs. Weights of a large language model are provided, and the baseline shows how to obtain text embeddings from it.

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 740 words

Humanity's Heritage

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 D

Statement

The eruption of Mount Vesuvius in 79 AD buried in ash and destroyed the city of Pompeii and many other towns, including Herculaneum, where in 1750 an ancient Roman villa with a large number of ancient papyri was discovered. The scrolls kept in its library had been carbonised and turned into fragile black cylinders. Today, scientists are striving to read them using X-ray tomography, computer reconstruction and machine learning.

When Vadim learned about this, he thought that he too would like to take part in the decipherment. On learning that scientists are already working on restoring the text inside each individual papyrus, he realised that the next step is to restore the correct order of the papyri themselves, since ancient treatises usually consisted of several parts.

Since Vadim does not know Ancient Greek, he decided to consider an analogous problem in Russian first. For this, he took a collection of poems and left some of the poems unchanged (train_D.json). He split each of the remaining poems (test_D.json) into two parts and then shuffled all the left and right parts together. Now Vadim's task is to restore the original pairs and put the poems back together.

Input format

The following files are attached to the task:

  • model_D.zip: weights for a large language model.
  • baseline_D.ipynb: a notebook with a baseline solution of the task and an example of using the large language model model_D.zip to obtain text embeddings
  • train_D.json: additional poems in full;
  • test_D.json: the shuffled left and right parts of the poems;
  • submission_D.csv: an example of the solution that must be submitted to the testing system.

Output format

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

The archive must contain:

  1. The file submission_D.csv with two columns:
    • left_id: the ID of a left half from test_D.json;
    • right_id: the ID of a right half from test_D.json.
  2. The file solution_D.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_D.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 Accuracy X\leq X, is scored 0 points;
  • a result with a value of Accuracy Y\geq Y is scored 60 points;
  • if the value of Accuracy lies between XX and YY, the number of points is computed by the linear interpolation formula:

Score=60AccuracyXYX.\text{Score} = 60 \cdot \frac{\text{Accuracy} - 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 evaluates how correctly the left and right parts of the poems are matched.

Let:

  • NN be the total number of left parts in test.json;
  • KK be the number of correctly restored pairs, that is, pairs (left_id, right_id) that coincide with the true correspondence.

Then the metric is computed by the formula

Accuracy=KN.\text{Accuracy} = \frac{K}{N}.

In other words, the metric shows the proportion of correctly restored poems.

The value of Accuracy lies in the range from 0 to 1. The higher the value, the better the quality of the solution.

Example of computing Accuracy in Python:

import pandas as pd

merged = true_pairs.merge(pred_pairs, on="left_id", suffixes=("_true", "_pred"))
correct = (merged["right_id_true"] == merged["right_id_pred"]).sum()
accuracy = correct / len(merged)

print("Accuracy =", accuracy)

Translated by SOTA. The Russian original is the official version and wins wherever the two differ. The data files, model weights and baseline_D.ipynb named in the statement are not included in the PDF. In the official solution, the poem fragments printed as examples are the Russian task data and stay untranslated. 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
model_D.zip (LLM weights), baseline_D.ipynb, train_D.json (whole poems), test_D.json (shuffled left and right parts), submission_D.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_D.csv with columns left_id and right_id.
Scoring
Accuracy = K / N, the share of left parts matched to the correct right part. 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) · D task
Language
Russian; English translation by SOTA
License
Not stated by the source