Четвертьфинал чемпионата мира по программированию 2019

Отчет жюри о технических проблемах

На старте соревнования в 12:00 (здесь и далее время Екатеринбургское) образовалась очередь из большого количества решений на проверку. Очередь на старте — обычное явление для соревнований такого масштаба (в сумме в квалификационных турах четвертьфинала и УрКОП, проходящих на одних и тех же задачах, принимало участие около 760 студенческих и школьных команд). Обычно такая очередь разгребается проверяющей системой в первые 10-15 минут соревнования, когда большинство команд справляется с самой простой задачей. Поэтому на старте соревнования жюри не предприняло никаких действий.

К 13:00 стало понятно, что очередь не уменьшается. Исследование того, почему система не успевает обрабатывать поступающие решения, показало, что основная причина — большое количество тестов в задачах A и D. Так, например, верное решение по задаче A с 90 тестами, проходящее один тест за 0.05-0.1 сек (обычное время для C#, Python и Java), проверялось 5-9 секунд. При этом в первый час соревнования на проверку поступало в среднем два решения в секунду. По результатам исследования жюри удалило большую часть тестов в задачах A и D и часть тестов в задаче I. Но решения, уже поступившие к этому моменту, продолжали проверяться на старом, полном наборе тестов, поэтому очередь продолжала расти.

Примерно к 14:30 были проверены лишь решения за первый час соревнования (в очереди лежали решения за полтора часа). В это время жюри смогло увеличить количество потоков проверки проверяющей системы. Подключение дополнительных потоков привело к тому, что у решений в очереди изменился приоритет. Теперь сначала проверялись все вновь поступающие решения, а уже содержащиеся в очереди — только если новых не было. В середине соревнования новые решения поступали уже не так активно, как на старте, и система успевала их обрабатывать. В то же время не было ясно, успеют ли провериться до конца соревнования все решения из очереди. Поэтому всем участникам было разослано сообщение, чтобы они отправили свои непроверенные решения повторно. До конца соревнования все новые решения успевали оперативно проверяться. В течение примерно 30 минут после окончания соревнования были проверены все решения, содержащиеся в очереди.

Жюри перепроверило все решения команд, поступившие в начале соревнования на те задачи, по которым удалялись тесты — чтобы убедиться, что нет решений, не проходящих только те тесты, которые впоследствии были удалены. Перепроверка подтвердила это — ни одно решение в результате неё не получило вердикт Accepted на новом наборе тестов.

Также во время соревнования команды, использующие компилятор PascalABC, пожаловалась на то, что часть их решений получают ошибку Restricted Function на первом тесте (примере из условия). Жюри смогло локализовать и устранить эту проблему только в конце соревнования. Сразу после его окончания все решения на PascalABC были перепроверены, и часть из них была зачтена.

Через несколько часов после окончания соревнования жюри обнаружило ошибку в проверяющей программе по задаче E "Прокрастинация", приводящую к тому, что не все верные ответы засчитывались. Ошибка была исправлена, а все решения по этой задаче перепроверены. Около 50 решений, ранее получавшие вердикт Wrong Answer Test 4, получили вердикт Accepted, а команды, отправившие эти решения, поднялись в итоговом протоколе.

Жюри приносит свои извинения всем участникам квалификационного тура и сделает всё возможное, чтобы проблемы, с которыми столкнулись участники, не повторялись на будущих соревнованиях.

Эту страницу можно найти на сайте Уральские олимпиады по адресу http://sp.urfu.ru/qf/2019/qual/jury_report.html