Дисклеймер: статья написана как познавательный материал для тех, кто интересуется внутренней кухней соревнований. Возможно, кто-то почерпнет здесь полезную информацию. При этом статья не является попыткой оправдать ошибки жюри. Мы прекрасно осознаем, что оправдания им нет, и делаем всё чтобы впредь их не повторять.
Постфактум начинает казаться, что неприятности начались уже тогда, когда появился первый документ с индексом турнира 13. В знаки чисел можно и не верить, но чертову дюжину неприятностей мы точно собрали.
Подготовка началась еще в прошлом году, но активность её резко нарастала только перед датой турнира. В ICL для нас заранее подготовили контестер, оттестировали его и в пятницу отправили на площадку. Так уж получилось, что в суматохе транспортных задач системный блок контестера соседствовал в машине с пачкой стульев, которые при перевозке успешно его придавили. До it-парка контестер доехал с полуразрушенным корпусом и мёртвым жестким диском. Пришлось экстренно менять винчестер и повторять проделанную ранее работу. Всё восстановили, но сервер так и проработал весь викенд с помятым внешним видом, к счастью, на его функциональности это не отразилось. Пятничные дела мы закончили в четвертом часу ночи и поехали готовиться к субботе.
Субботний день, как обычно, включает пробный тур, официальное открытие и развлекательное мероприятие. В роли последнего мы выбрали придуманный нами формат hardCOreDER. На этот раз задачей было по предложенным на экране примерам входного и выходного файлов восстановить задачу и решить её. Всего было 6 тестов из которых 5 мы показывали на мониторе по одному за минуту, а 6-ой так и оставался в секрете.
Всё шло весело и задорно, пока не выяснилось, что мы отчаянно не укладываемся в график и после третьего раунда пришлось отправить участников на обед.
После обеда оставалось времени только на четвертый раунд, так как следом шло открытие, а затем мы организовывали площадку для ИОИП, который писали 13 (!!!) школьников.
Тут отдельная история про четвертый раунд, где я предложил дать следующие тесты.
Sample 1: 1 0 0 -> 0
Sample 2: 1 0 -1 -> -1 1
Sample 3: 0 1 -1 -> 1
Sample 4: 1 -2 1 -> 1
Sample 5: 1 0 1 -> No solution
Ответ: даны коэффициенты квадратного уравнения A B C, нужно вывести корни или No solution если корней нет
При подготовке у меня случился спор с коллегой по жюри, который утверждал, что задачу в таком виде решить нереально (точнее нереально догадаться до сути задачи). Так мы поспорили на Guinness-бургер, который я успешно выиграл!
Продолжение hardCOreDER мы отложили на неопределенный срок и отдали площадку для проведения торжественного открытия. Параллельно с открытием часть компьютеров подготовили для ИОИП. В 16:30 мы получили сигнал к началу и объявили участникам старт. Но потом еще долго не могли получить доступ в контестер, который починили только через полчаса. К счастью, на ход олимпиады это не повлияло, но участники занимали площадку до 20:30.
Всё это время жюри не могло работать со своим контестером из-за соображений безопасности, так как для работы нужно было запустить контест и он стал бы доступен в локалке. Мы заняли это время обсуждением теоретических вопросов. В частности, пришли к решению снять с контеста одну из задач. Причина — отсутствие строгого доказательства решения. Задача была уже подготовлена и теория была из разряда "всё очевидно", но строгости в математике не удалось достичь в срок.
Потом последние правки, сверка ограничений, проверка по чек-листу и последний штрих — распечатка условий. Тексты были напечатаны и разложены по конвертам в 4 утра. Кстати, на середине процесса, обнаружилось, что при экспорте в пдф исчез индекс задачи К в её собственном тексте. Легенда задачи рассказывала, что "Задача К проблемсета ICL'13 оказалась настолько сложной...". Отсутствие индекса K в этом предложении явно не влияло на суть задачи, поэтому мы решили с утра отправить кларификейшн на эту задачу, чтобы стала понятна задуманная нами парадоксальность легенды. Разумеется с утра оказалось не до этого и про букву К все успешно забыли.
А с утра было вот что. Сначала автобус с участниками опоздал на 50 минут. Когда он наконец доехал и участники торопились занять места, выяснилось что по задаче "Цена вопроса" проверка на сервере OpenCup занимает суммарно 5 минут (на нашем — 2 минуты), что катастрофически грузило бы очередь. Пришлось выбросить похожие тесты, оставив минимально необходимый набор. Далее оказалось, что на "Идеальные наборы" авторское решение на сервере OpenCup работает 7 секунд, а на Java — за 20! Быстро разобрались, что там косяки с компилятором и дали старт контеста, но уже с огромным опозданием.
На первом часу пришел вопрос от одной из команд по задаче "Мёбиус" — всегда ли есть путь? И тут произошло невероятное — автор задачи (разум которого контролировали в этот момент тёмные силы, не иначе) непостижимым образом отвечает, что путь всегда есть. После этого посыпались WA от топ-команд, что заставило усомниться. Быстрый взгляд на тесты обнаружил среди ответов "-1". o_O
o_O O_o o_O
Все в шоке, даже автор тестов. Что поделать — все тесты с ответом -1 изымаются и запускается rejudge. После чистки тестсета сразу же не заходит решение у NRU ITMO. Снова усомнились. Но дальше быстро пошел масс-акцепт для других команд и мы расслабились.
Далее контест шел гладко, и казалось, что неприятности позади.
Но на пятом часу контеста произошло самое страшное, когда из OpenCup пришло предположение, что задача "Цена вопроса" является NP-полной. Предположение было подкреплено примером теста, который валит все решения жюри. Чуть позднее автор задачи разобрался в проблеме и подтвердил, что задача некорректна. Тем временем, контест подошел к концу, а 6 команд уже протолкнули эвристику, аналогичную авторской, через имеющийся набор тестов. Ситуация оценивалась как патовая и на экстренном совещании жюри было решено оставить таблицу без изменений.
Шутка в тему: "Чтобы топ-команды не решили все задачи, жюри включило в проблемсет NP-сложную задачу, но Гену даже это не остановило"
Казалось, что с концом тура закончились и проблемы, ведь оставалось самое легкое — сделать таблицы, раскидать места, дипломы, напечатать их и раздать призы. Как вдруг, очередной фейл! Дело было в дипломах. Технология подготовки дипломов довольно проста — заранее, на фирменных бланках печатаются шапка и футер, ставятся подписи гендиректора ICL и министра образования, шлёпаются печати, а затем, перед самым награждением впечатываются названия команд и фамилии. Весь процесс уже неоднократно отработал на предыдущих турнирах, но на этот раз те, кто делал заготовки, невольно подложили нам бомбу замедленного действия, отпечатав шапку на струйном принтере. Объясняю: при попытке впечатать на лазерном принтере фамилии и названия команд, предварительно нанесенная струйная краска плавится под горячим лазерным барабаном и расплывается, превращая диплом в страшное зрелище. Вот и ответ на вопрос, почему все дипломы заполнены рукописным текстом. Для желающих получить комплект нормальных дипломов предусмотрена фича — напишите организаторам на e-mail и получите дипломы почтой.
Неприятности с дипломами сильно задержали церемонию награждения. А ведущему потом еще и пришлось объявлять имена победителей, читая их с дипломов, заполненных тремя разными почерками, из которых не все были достаточно разборчивы. Но вопреки тенденции, эта процедура прошла гладко. Всех одарили подарками и отправили на ужин.
Потом демонтаж площадки, выгрузка данных и другая рутина. А через пару часов, пока автор доедал свой трофейный бургер, мы решили написать эту статью. Чтобы вам было интересно, а мы, перечитывая её через годы, улыбнулись сами себе.
Постскриптум: Мы благодарим всех наших гостей за то, что они приезжают, показывают великолепные результаты, прощают нас за ошибки и искренне поддерживают в трудные минуты. В следующем году мы обещаем серьезно поработать над качеством подготовки и уложиться в хронометраж события. А еще мы очень хотим сделать хороший развлекательный тур, на который в этот раз не хватило времени. Приезжайте, будет весело!
Про задачу с hardcoder, то что это корни квадратного многочлена я догадался ещё на первом сэмпле, однако всякие вердикты No solution и то что всё сравнивается fc заставило нас её сдать очень поздно)
Вы еще полуфинал не видели... Жаль времени не хватило
Хорошо бы найти еще фотографию покореженного сервера )
С задачей ideal sets было тоже не всё гладко у нас кучу времени в таблице стоял WA1(как и у итмо 1 наверно) :) И rejudge по ней случился только тогда когда я попросил таки проверить тест.
Это да, чеккер пришлось менять ( я думал, вы сразу подошли
Ну сразу когда узнали, что тест из условия.
Кажется Sample 1 и Sample 5 противоречат друг другу.
Опечаточка.
1 0 1 -> No solution
Кстати, вот результаты hardcoreDer:
https://docs.google.com/spreadsheet/ccc?key=0Air_ONzULL-4dEVlQi1YQjYySGFfa2xQNU5Sc0ZFZ1E#gid=3
Интересное чтиво.
Приезжал два раза, оба раза очень понравилось.
Успешного проведения в следующем году!