В конце некоторых параграфов вы встретите практические задачи. Они помогут лучше разобраться в теме и закрепить материал. Чтобы уверенно с ними работать, разберёмся, как устроена система проверки. Спойлер: всё просто, но есть нюансы.
Интерфейс
Мы рекомендуем решать задачи с компьютера: так удобнее, и интерфейс отображается корректно.
Когда вы открываете задачу, экран делится на две части:
- слева — описание задания,
- справа — редактор, где вы пишете код.

Структура описания задачи
Описание включает:
- условие задачи;
- формат ввода и вывода — какие данные программа получает и должна вернуть;
- пример — демонстрирует ожидаемый результат;
- ограничения — по времени и памяти.

Вы можете ввести код прямо в редакторе или загрузить файл с решением.
Отправка решения
После этого начнётся проверка — код будет протестирован на разных входных данных. Этот процесс занимает некоторое время.

Проверка и тесты
Эти данные не всегда совпадают с примерами из условия задачи — они подобраны так, чтобы проверить решение на корректность, граничные случаи и эффективность.
Проверка занимает несколько секунд. Прогресс и историю можно отследить на вкладке «Отправленные решения».

Статусы проверки
Результаты отображаются в виде вердиктов. Вот основные из них:
- OK (Accepted) — решение прошло все тесты успешно.
- WA (Wrong Answer) — программа выдала неверный результат хотя бы на одном из тестов.
- CE (Compilation Error) — ошибка компиляции.
- RE (Runtime Error) — ошибка выполнения.
- TM (Time Limit) — при выполнении превышено допустимое время.
- ML (Memory Limit) — при выполнении превышена допустимая память.
Wrong Answer
В случае WA для тестов из примеров отображаются:
- входные данные;
- вывод вашей программы;
- ожидаемый правильный ответ;
- вывод системы.

Это поможет вам отладить решение. Остальные тесты остаются скрытыми — попробуйте сами смоделировать граничные случаи.
Compilation Error
Означает, что в коде допущена синтаксическая или другая ошибка, из-за которой программа не запускается.

Перейдите в «Лог компиляции», чтобы увидеть подробности:
- тип ошибки;
- строка, где она возникла;
- комментарий от компилятора.
Runtime Error
Это ошибка, которая возникает во время выполнения программы.
Возможные причины:
- деление на ноль;
- выход за границы массива;
- необработанное исключение и т. п.
Time Limit и Memory Limit
Эти ошибки возникают в ответ на плохо оптимизированный код.
Например, если встречается «матрёшка» из циклов. Решение тут только одно: вдумчиво изучить код и попробовать его оптимизировать, сделав менее ресурсоёмким.
Совет
Если не удаётся разобраться с ошибкой — не спешите расстраиваться. Попробуйте:
- упростить тест и воссоздать ситуацию локально;
- добавить отладочный вывод;
- обсудить решение с участниками сообщества хендбука.