24 мая в Рапид-Сити (Южная Дакота, США) состоялся финал Международной студенческой олимпиады по программированию (ACM-ICPC). Это самый крупный и престижный мировой турнир, в котором демонстрируется мастерство командного программирования. По итогам финала ACM-ICPC Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики (Университет ИТМО) завоевал седьмой по счету чемпионский кубок, продолжив беспроигрышную серию побед России и побив собственный мировой рекорд по количеству завоеванного первенства.
41-я по счету олимпиада ACM-ICPC собрала рекордное число участников – 46 381 студент из 2 948 университетов 103 стран. В финале главного мирового первенства студентов-программистов соревновались 133 команды, из них 13 представляли Россию: три команды из Москвы, три из Санкт-Петербурга и по одной из Екатеринбурга, Новосибирска, Перми, Петрозаводска, Саратова, Самары и Томска. Честь Университета ИТМО защищали студенты кафедры компьютерных технологий И. Белоногов (4 курс бакалавриата), И. Збань (4 курс бакалавриата) и В. Смыкалов (1 курс магистратуры). Готовил команду тренер-рекордсмен А.С. Станкевич, которому вуз обязан всеми своими чемпионскими кубками. В 2016 году А.С. Станкевич получил престижную награду ACM-ICPC Senior Coach Award, которую вручают тренерам, чьи подопечные 15 или более лет выходят в финал конкурса.
Студенты Университета ИТМО справились с 10 из 12 задач. Столько же задач решили еще четыре команды, однако петербургский вуз показал лучшее время, что принесло ему седьмой по счету кубок мира. Таким образом, Университет ИТМО продлил беспроигрышную серию российских команд на ACM-ICPC. Уже шестой год подряд, с 2012 года, победный кубок достается петербуржцам (в 2014 и 2016 годах победу на ACM-ICPC одерживала команда Санкт-Петербургского государственного университета). Кроме того, вуз утвердился на позиции абсолютного рекордсмена по количеству чемпионских титулов ACM-ICPC. На втором месте СПбГУ с четырьмя кубками, а у ближайших зарубежных соперников – американского Стэнфорда и китайского университета Джао Тонг – по три победы.
Еще три российских вуза стали призерами турнира. 12 лучшим командам-финалистам вручили медали чемпионата – по четыре каждого достоинства. Золото, помимо Университета ИТМО, досталось Варшавскому университету, Сеульскому национальному университету и СПбГУ. Серебряные медали взяли российский МФТИ и три китайских вуза – Университет Синьхуа, Пекинский университет и Университет Фудань. Бронзу завоевали Университет KAIST (Южная Корея), Уральский федеральный университет, Королевский технологический институт – KTH (Швеция) и Токийский университет. С полной таблицей результатов можно ознакомиться на сайте чемпионата – https://icpc.baylor.edu/worldfinals/results.
– Все команды, вошедшие в ТОП-12, не раз назывались в списках фаворитов – больших сюрпризов не было. По сравнению с прошлым годом, мощный рывок показали азиатские вузы: в прошлом году им досталось всего две медали, а сейчас – целых семь. Однако в каждом регионе много сильных команд, и конкуренция все обостряется, – прокомментировал итоги Международной студенческой олимпиады по программированию наставник команды Университета ИТМО А.С. Станкевич.
– Соревнование прошло удивительно гладко, – поделился впечатлениями И. Белоногов. – В некоторых задачах мы интуитивно положились на факты, которые не могли доказать полностью, и чутье нас не подвело. Нам удалось сдать 10 задач фактически за четыре часа, и это дало хороший запас уверенности. Но только в самом конце, когда мы сдали десятую задачу, я подумал: «Окей, видимо, получится взять золото!»
– Важно вовремя отказаться от той задачи, в которой придуманное решение окажется неверным. Понять, когда команда успевает исправить ошибку, а когда лучше оставить попытки и переключиться на другое задание, – пояснил А.С. Станкевич.
В ACM-ICPC участвуют команды по три человека; в их распоряжении – один компьютер. Помимо логики и умения работать в жестких временных рамках, конкурсанты должны проявить навыки командной игры и суметь грамотно распределить роли. Финальный поединок длится 5 часов. Побеждает команда, которая правильно решит наибольшее количество задач за наименьшее время. Каждое задание включает описание некой выдуманной ситуации (легенду), примеры тестов и формальные ограничения. Чтобы решить задачу, участникам нужно «перевести» условия на язык математики, затем разработать алгоритм решения и написать код. Отправленное судьям решение проходит проверки, а за неудачные попытки командам начисляется штрафное время.
Команда Университета ИТМО готовилась к финалу чемпионата с октября прошлого года, тренируясь в среднем по пятнадцать часов в неделю. Ребята участвовали в региональных отборочных этапах и тренировочных сборах, решали задачи олимпиад прошлых лет.
– Мы так много тренировались вместе, что все процессы в команде были отлажены практически идеально. Каждый писал свои задачи, некоторые мы делим между собой по типу, и все получилось, – рассказал И. Збань.
Чемпионы ICPC-2017 получили премию в размере 15 000 долларов США. Денежное вознаграждение также получили команды-медалисты.
Тысячи болельщиков по всему земному шару следили за ходом решающей битвы ACM-ICPC по онлайн-трансляции, которую обеспечивала техническая команда Университета ИТМО. Видеостриминг с финала шел на YouTube, Twitch (крупнейшей видеоплатформе для геймеров) и в соцсети ВКонтакте (новшество 2017 года). Вещание впервые сопровождалось комментарием на четырех языках (английский, русский, китайский и арабский).
Зрители могли видеть как планы зала, где проходил турнир, так и картинку с вебкамер на компьютерах участников, скринкаст с экранов компьютеров, ход тестирования «посылок» (так называют решение задачи, отправленное на проверку) и вердикт судей. В прямом эфире шли интервью с экспертами и запись разборов заданий.
То, какая из команд будет показана на «втором экране» в каждый момент времени, определялось автоматическим голосованием. Система фиксировала хэштеги с названиями команд в Twitter и ставила участников в очередь на трансляцию согласно количеству набранных ими твитов.
За ходом соревнования следили десять аналитиков – они в режиме реального времени наблюдали, какие задачи решают команды-лидеры, какие языки программирования выбирают участники, давали оценку происходящему и публиковали интересные новости.
В данное время трансляция доступна в записи на сайте ICPCLive
Следующий финал всемирной студенческой олимпиады по программированию пройдет в Пекине.
Справочно
ACM-ICPC – International Collegiate Programming Contest – старейший, крупнейший и самый престижный в мире чемпионат по спортивному программированию. Соревнование проходит ежегодно c 1977 года под эгидой Ассоциации вычислительной техники (ACM), спонсором выступает компания IBM. Изначально в олимпиаде состязались, главным образом, команды из Северной Америки; с 1989 года география турнира расширялась и сейчас охватывает весь мир.
Российские команды участвуют в ACM-ICPC с 1995 года. За это время они уже двенадцать раз (включая победу в 2017 году) становились чемпионами. Семь кубков мира – на счету Университета ИТМО: вуз становился абсолютным чемпионом ACM-ICPC в 2004, 2008, 2009, 2012, 2013 и 2015 и 2017 годах и уже долгое время удерживает мировой рекорд.