С каждым годом самое престижное соревнование среди программистов расширяет географию и увеличивает количество участников: в этом году в финале чемпионата приняли участие 140 команд из 51 страны. Состязания проходят в 42 раз.
Чемпионат в Пекине, определенно, выделился среди последних контестов ACM ICPC. С 2012 года чемпионский кубок разыгрывали между собой два петербургских вуза — Университет ИТМО (четыре победы за последние шесть лет) и СПбГУ (две победы за последний шесть лет). ACM ICPC-2018 же, ставший не самым удачным для двух лидеров контеста, открыл новую «звезду» чемпионата — команду МГУ им. Ломоносова, которая ранее ни разу не получала чемпионский титул, но неоднократно брала «золото» чемпионата (пять раз были на втором месте).
Команда МГУ приехала в Пекин в совершенно новом составе: чемпионами стали Михаил Ипатов, Владислав Макеев и Григорий Резников. Тренер команды — Елена Андреева. Студенты успешно решили девять задач, сдав последнюю за две минуты до окончания контеста. Таким образом, чемпионский кубок вновь уезжает в Россию, но на этот раз в Москву.
Второе место и золотую медаль также получила московская команда из МФТИ (восемь решенных задач). С третьим результатом финишировала команда Пекинского университета, заполучившая «золото», с четвертым — команда Токийского университета.
Университет ИТМО занял девятую строчку турнирной таблицы и получил бронзовую медаль соревнования. Сборная вуза правильно решила 7 задач из 12. В этом году Университет ИТМО в финале Чемпионата мира по программированию в Пекине представляли студенты первого курса магистратуры кафедры КТ Илья Збань и Иван Белоногов, которые в прошлом году принесли вузу седьмой кубок чемпионов ICPC в Рапид-Сити, а также студент второго курса бакалавриата кафедры КТ Михаил Путилин, отправившийся в финал впервые. Главным тренером команды выступил доцент кафедры компьютерных технологий, кандидат технических наук Андрей Станкевич, который подготовил не одно поколение чемпионов по спортивному программированию. В 2016 году он получил престижную награду ACM ICPC Senior Coach Award за то, что в течение 15 лет его подопечные проходили в финал конкурса.
«Мы рады, что кубок ICPC вновь уезжает в Россию, – говорит Андрей Станкевич, тренер команды Университета ИТМО. – Среди команд-победителей сюрпризов не было. Все золотые медалисты – победители Международной школьной олимпиады по программированию (IOI), и все они рассматривались как претенденты на титул чемпиона. У команды Университета ИТМО в середине соревнований, к сожалению, дела пошли не очень – в процессе скопилось несколько проблем, которые оказалось тяжело преодолеть. К счастью, большое количество тренировок позволило добиться стабильности, и даже из очень плохой ситуации команде удалось выйти с медалью».
Помимо чемпионского титула в олимпиаде разыгрываются золотые, серебряные и бронзовые медали: в этом году медалистами стали 13, а не 12 команд. В числе медалистов из России, кроме МФТИ и Университета ИТМО, также Уральский федеральный университет — для них это пятая бронзовая медаль за историю участия в ACM ICPC.
С таблицей результата можно познакомиться по ссылке.
Всего в этом году Россию в финале представляли 11 команд, в том числе четыре команды Москвы и три из Санкт-Петербурга, а также участники из других городов: Саратова, Перми, Новосибирска и Екатеринбурга. В целом за российскими вузами уже давно закрепилось положение лидеров чемпионата: команды из РФ участвуют в чемпионате с 1993 года, а с 2000 года они 13 раз становились абсолютными чемпионами ACM ICPC. Из них семь раз победу в чемпионате одерживали команды Университета ИТМО, установив таким образом мировой рекорд.
Чемпионат по спортивному программированию International Collegiate Programming Contest проводится ежегодно c 1977 года под эгидой Ассоциации вычислительной техники (ACM, штаб-квартира в Нью-Йорке). Однако несмотря на то, что в своем нынешнем формате соревнования существуют уже более 40 лет, их популярность среди молодых программистов продолжает расти год от года. Например, в прошлом году на соревнованиях было зарегистрировано более 46 тысяч студентов по всему миру, что в четыре раза больше, чем количество спортсменов на летней олимпиаде в Рио.
В этом году в финале приняли участие 140 команд из 51 страны — на семь больше, чем в прошлом году. Студенты представляли все регионы мира. Соревнования проходили в крупнейшем вузе Китая с Пекинском университете, территория которого считается одним из самых красивых мест в мире.
Чтобы попасть на финальные состязания, команды должны сначала пройти отбор в своем вузе, а затем региональный тур. В частности, в декабре прошлого года Университет ИТМО стал одной из четырех площадок отборочного тура в России и СНГ, в котором участвовали более 300 команд. По итогам полуфинала по лучшим результатам были отобраны 16 команд, представляющих Северную Евразию.
Согласно правилам соревнований, в одной команде может быть не больше трех студентов не старше 25 лет. К участию в чемпионате не допускаются студенты, дважды участвовавшие в финальной стадии соревнований. За пять часов программисты должны решить от 8 до 12 алгоритмических задач, условия которых написаны на английском языке. Команды пишут решения на языках программирования Java, C, C ++, Kotlin и Python (именно такой набор для финала был одобрен правилами в этом году) и посылают их на тестирующий сервер.
Программы тестируются на большом количестве различных входных тестов, неизвестных участникам. Если программа выдала неправильный ответ или не уложилась в ограничения по времени или памяти, то сообщение об этом отправляется команде, после чего участники могут послать исправленную версию. Задача считается решенной, если программа выдала правильные ответы на всех тестах. В отличие от других олимпиад, частичные решения не учитываются. Побеждает команда, решившая правильно наибольшее число задач. Если несколько команд решают одинаковое количество задач, то их положение в рейтинге определяется штрафным временем.
Особенность задач в том, что их условия приближены к тем, что могут встретиться программистам-практикам в работе. На одну команду дается лишь один компьютер без доступа к интернету или другой внешней сети. Ребята должны показать навыки командной работы, которые также требуются при разработке реального программного продукта в любой IT-компании. Помимо логики и умения работать под давлением, участники соревнований должны проявить навыки командной игры и правильного распределения ролей. Как отмечают организаторы, для того, чтобы решить некоторые задачи, достаточно лишь аккуратности и внимательности. Для других же заданий требуется углубленное знание различных алгоритмов.
Задачи проверяются автоматически по тестам, которые заранее составляются жюри, проверка решений идет в реальном времени. Учитывается полнота и скорость выполнения задания, а также количество попыток, которое сделала команда при решении той или иной задачи.
Чемпионы ICPC получает кубок Чемпионата мира и солидную денежную премию, которая равняется 15 000 долларов США. Остальные команды-призеры также не уезжают без материального вознаграждения. Команды, занявшие первые четыре места, получат золотые медали и по 7500 долларов. C пятого по восьмое место — серебряные медали и 6000 долларов. А те участники, которые заканчивают соревнования на девятом-двенадцатом месте, становятся обладателями бронзовых медалей и 3000 долларов.