Шахматы XXI века
В Москве прошел международный студенческий чемпионат мира по программированию ICPC – главное соревнование в мире IT. О страстях, кипевших на нем, «Популярная механика» поговорила с человеком редкой профессии – легендарным комментатором соревнования по спортивному программированию Олегом Христенко.
Международная студенческая олимпиада по программированию, она же Студенческий командный чемпионат мира по программированию ICPC, – крупнейшая студенческая командная олимпиада по программированию. Придумано такое состязание было еще в 1970-х годах в Техасском университете. С 1977 года проводится ежегодно.
Правила игры
Чемпионат ICPC – соревнование не национальных команд, а университетов. Хотя в дальнейшем к университетам приклеивают национальные флаги: так людям болеть за своих привычнее. Студенческая команда должна за пять часов решить наибольшее количество задач: придумать алгоритм, написать программу, сгенерировать код, загрузить входные данные и выполнить программу на сервере. Судейство на ICPC самое непредвзятое, так как осуществляется без людей. Код исполняется на общем сервере, который для всех один. Отправляется текстовый файл, заново там компилируется и выполняется. Если решение верное, то команде начисляется балл, неверное – не начисляется. В некоторых задачах есть лимит по времени выполнения программы, чтобы участники не могли использовать примитивные алгоритмы, например перебор. Также бывают ограничения на использование оперативной памяти.
Если программа прошла, считается время от старта до момента сдачи плюс 20 минут за каждую неудачную попытку. Например, если решили задачу на 36-й минуте, но перед тем сделали две попытки с ошибками, то к 36 прибавляется штраф (2 х 20 минут) и в итоге получается 76 минут. Этот параметр становится важным, если команды сдали одинаковое количество задач: в таком случае побеждает та, у которой меньшее время.
Классическая схема ICPC подразумевает трех участников и один компьютер, под эту конфигурацию и набирается команда. Причем вовсе не обязательно, чтобы все три студента занимались решением простых и средних задач, – возможен вариант, когда то, что требует быстрой реализации, пишут один или двое, а третий в это время думает над сложными и подключается в конце. Учитывая уровень задач, в команде желательно иметь сильного математика, хотя при классической схеме его навыки выполнения простых задач могут быть хуже, чем у двух остальных участников.
Кроме того, при работе очень важен выбор последовательности решения задач, поскольку время считается от начала тура до момента сдачи программы.
Предположим, есть две задачи: первая пишется 20 минут, вторая – 10, тогда при порядке 1–2 получается, что первая сдается через 20 минут, а вторая – через 30 (суммарное время – 50 минут); при порядке 2–1 первая программа сдается через 10 минут, вторая – через 30 (суммарное время – 40 минут).
Специфика московского этапа
Все карты смешала пандемия COVID-19. Сначала на год перенесли московский финал ICPC 2020. Для ICPC это критично, ведь тут соревнуются студенты. За год некоторые ребята успели окончить университет, другие уехали на стажировку за границу, а в одной из корейских команд сильнейшего участника призвали в армию. Многие команды развалились. В июне 2021 года стало понятно, что идет новая волна COVID-19. Опять стали сдвигаться сроки, возникли споры, проводить финал онлайн или офлайн, а может, уравнять очных и заочных участников. От России в дискуссии мало что зависело, хоть она и была страной-хозяйкой. Родина ICPC – США, и все решают именно американцы, в частности исполнительный директор, президент ICPC Foundation Уильям Паучер.
Идея показалась заманчивой: команды видели, что есть выбор – ехать в Москву или писать программы дома. Весь Китай выбрал онлайн: оттуда и выехать очень трудно (в Китае до сих пор есть выездные визы), и вернуться проблематично – минимум две недели надо сидеть на карантине. А участникам и учиться, и работать нужно. Пришли отказы и из США: у нас с ними вакцинное пространство не пересекается.