# Apartment Rental Prices

*English translation by SOTA – AI Community of the Russian original. Organisers who would like this translation removed can email sota.ai.community@gmail.com.*

All-Russian School Olympiad in Informatics 2025–2026, Regional Stage, Grades 9–11<br>
“Artificial Intelligence” profile, Tour 2, 19 January 2026<br>
Task C

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

## Statement

While Semyon was preparing to solve the regional stage of the All-Russian School Olympiad and dreaming of how he would earn his BVI (university admission without entrance examinations), he decided to estimate what kind of apartment he could rent with the money he had saved from ML olympiads if he were not given a place in the dormitory next to the university. To do this, he scraped data from property rental websites and decided to build a model that predicts the rental price, so that he could then find the best deals. However, because the data were collected rather carelessly and from different websites, the dataset turned out to be quite “dirty”. Help Semyon process the data carefully and obtain the best possible quality of rental price prediction.

## Input format

The following files are attached to the task:

- `train.csv` - the column `price` is the target variable. The other columns are features.
- `test.csv` - the column `id` is the object identifier. The other columns are features.
- `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`.
- `price` - the target variable you predicted.

## Scoring

You can get up to 100 points for this task.

The data are split into a public and a private part. When you submit `submission.csv`, you are shown the result on the public part. After the contest ends, your result will be recalculated on the private part.

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** (RMSE=21.046) is worth **0 points**;
- the result of the **author's solution** (RMSE=13.8) is worth **100 points**;
- results between these two points are distributed linearly.

## Answer evaluation metric

This task uses the metric **RMSE**.

Strict mathematical definition of the metric **RMSE**:

$$
\mathrm{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}
$$

$y_i$ — the true value, $\hat{y}_i$ — the prediction, $n$ — the number of objects.

Example of computing the **RMSE** metric in *Python*:

```python
from sklearn.metrics import root_mean_squared_error

y_true = [3.0, -0.5, 2.0, 7.0]
y_pred = [2.5,  0.0, 2.1, 7.8]

rmse = root_mean_squared_error(y_true, y_pred)
print("RMSE =", rmse)
```
