1.2. Как работать с системой проверки заданий

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

Интерфейс

Мы рекомендуем решать задачи с компьютера: так удобнее, и интерфейс отображается корректно.

Когда вы открываете задачу, экран делится на две части:

  • слева — описание задания,
  • справа — редактор, где вы пишете код.

Python

Структура описания задачи

Описание включает:

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

Python

Вы можете ввести код прямо в редакторе или загрузить файл с решением.

Отправка решения

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

Python

Проверка и тесты

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

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

Python

Статусы проверки

Результаты отображаются в виде вердиктов. Вот основные из них:

  • OK (Accepted) — решение прошло все тесты успешно.

  • WA (Wrong Answer) — программа выдала неверный результат хотя бы на одном из тестов.

  • CE (Compilation Error) — ошибка компиляции.

  • RE (Runtime Error) — ошибка выполнения.

  • TM (Time Limit) — при выполнении превышено допустимое время.

  • ML (Memory Limit) — при выполнении превышена допустимая память.

Wrong Answer

В случае WA для тестов из примеров отображаются:

  • входные данные;
  • вывод вашей программы;
  • ожидаемый правильный ответ;
  • вывод системы.

Python

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

Compilation Error

Означает, что в коде допущена синтаксическая или другая ошибка, из-за которой программа не запускается.

Python

Перейдите в «Лог компиляции», чтобы увидеть подробности:

  • тип ошибки;
  • строка, где она возникла;
  • комментарий от компилятора.

Runtime Error

Это ошибка, которая возникает во время выполнения программы.

Возможные причины:

  • деление на ноль;
  • выход за границы массива;
  • необработанное исключение и т. п.

Time Limit и Memory Limit

Эти ошибки возникают в ответ на плохо оптимизированный код.

Например, если встречается «матрёшка» из циклов. Решение тут только одно — вдумчиво изучить код и попробовать его оптимизировать, сделав менее ресурсоёмким.

Совет

Если не удаётся разобраться с ошибкой — не спешите расстраиваться. Попробуйте:

  • упростить тест и воссоздать ситуацию локально;
  • добавить отладочный вывод;
  • обсудить решение с участниками сообщества хендбука.
Чтобы добавить в заметки выделенный текст, нажмите Ctrl + E

Отмечайте параграфы как прочитанные, чтобы видеть свой прогресс обучения

Предыдущий параграф1.1. Прежде чем начать
Следующий параграф1.3. Введение

Перед вами хендбук по алгоритмам от авторов, увлечённых красотой и элегантностью математики.