Для участия в чемпионате зарегистрировалось рекордное количество программистов – 3279 человек в возрасте от 14 до 23 лет. Соревнования проходят в формате парного программирования. Команда может состоять не более, чем из двух человек, вместе участники решают общую задачу. Такая техника позволяет уменьшить количество возможных ошибок, которые можно допустить при решении. Хотя выступать на соревновании можно и соло.
Финальные дни стартовали с пробного тура: в это время программисты отстраивали свои компьютеры, а также состязались в CodeGame Challenge. Каждая команда должна была написать игровую стратегию для своей футбольной команды, то есть запрограммировать поведение игроков, скорость и направление их движения, тактику забивания голов и обороны. Уже на этом этапе команда 120 Minutes Adventure в составе Михаила Путилина и Александра Логунова показала лучшие результаты.
«Самым интересным и богатым на впечатления было закрытие CodeGame Challenge. В рамках этой игры командам нужно было за три часа написать стратегию для игры в футбол, которые потом соревновались между собой. У каждой команды был свой уникальный подход: к примеру, некоторые ставили двух вратарей, некоторые оставляли ворота пустыми. От матчей было невозможно оторваться. Финальные матчи были особенно напряженными. Стратегия нашего главного соперника уверенно обыграла нашу стратегию в групповом этапе. И, если бы в нашем финальном матче его футболист во время одного опасного момента попал не в штангу, он бы отправил нашу команду на второе место. Но все же наша стратегия победила с минимальным перевесом», – описал игру Александр Логунов.
Финальный раунд состоялся 12 августа. Во время решающего испытания команды должны были за три часа решить семь задач разной сложности, при этом решения можно писать на 15 языках программирования, хотя самым популярным стал С++. Задачи для VK Cup составляются совместно с командой сообщества программистов Codeforces, примеры задач квалификационного тура-2018 можно посмотреть здесь.
«Существенное отличие VK Cup от ICPC в том, что здесь во время тура решения проверяются только на части тестов, и нельзя быть уверенным, что решение правильно, если оно прошло их. На соревнованиях, подобных основному туру VK Cup, задачи обычно имеют некоторое правильное решение и, возможно, не одно, и перед написанием кода можно подумать и понять, будет ли это работать. На CodeGame Challenge никакого правильного решения не было. Можно пробовать разные подходы, и трудно сказать, будет ли какая-то идея работать до того, как она уже написана и протестирована», – пояснил Михаил Путилин.
Команда 120 Minutes Adventure стала абсолютным чемпионом соревнования, заработав приз в 1 048 576 рублей. В двоичной системе счисления это круглое число 100000000000000000000. На втором месте оказался чемпион турнира прошлого года Айдар Сайранов из Санкт-Петербургского государственного университета, который выступал в этом году сольно, а на третьем – команда из МГУ им. М. В. Ломоносова в составе Владислава Макеева и Михаила Ипатова. Серебряный призер получил 524 288 рублей, а бронзовые – 262 144 рубля. Остальные команды, которые вошли в восьмерку лучших, забрали с собой по 131 072 рубля. На седьмом месте оказалась команда из студентов бакалавриата Университета ИТМО – Александры Дроздовой и Арсения Кириллова. С полной таблицей результатов можно ознакомиться тут.
«Для участия в соревновании нужно хорошо владеть каким-либо языком программирования, в спортивном программировании самый популярный – C++. Знание сложных алгоритмов на VK Cup не понадобилось, нужно было лишь быстро соображать, чтобы придумывать решения задач. Для нас работа в команде не была сложной. Мы писали решения разных задач, так что взаимодействовать с кодом друг друга не пришлось. Какие-то проблемы могут возникнуть при решении задач, например, нужно распределять задачи, чтобы не работать над одним и тем же. Спортивное программирование развивает умения математическую модель задачи, писать код без багов и быстро находить ошибки. Однако работа в компаниях сильно отличается от соревнований», – прокомментировал Михаил Путилин.
Отметим, что студенты Университета ИТМО также становились чемпионами VK Cup в 2016 году. Тогда первое место заняла команда Геннадия Короткевича и Адама Бардашевича. Они являются чемпионами ACM ICPC. Михаил Путилин также участвовал в Чемпионате мира по программированию в этом году в составе сборной Университета ИТМО, а также стал победителем соревнований Google Hash Code-2018. Таким образом, на VK Cup традиционно собираются лучшие программисты России и стран СНГ, и сами организаторы турнира подчеркивают, что одна из важнейших его миссий – поддерживать молодое поколение разработчиков и развивать интерес к программированию.
«Олимпиады очень сильно прокачивают навык решения алгоритмических задач. Отмечу, что в IT-компаниях такие задачи в чистом виде встречаются редко. Но зато этот навык помогает определять, в чем "настоящая сложность" реальных задач промышленного программирования, и какие именно вещи в существующих решениях нужно оптимизировать. Также это – хороший опыт работы в стрессовой ситуации и условиях ограниченного времени. Например, в IT довольно часто приходится искать и исправлять баги в кратчайшие сроки. Также умение достаточно быстро и корректно реализовать новый элемент стратегии – это очень важный навык. Другой полезный навык – это наблюдать за стратегиями других игроков во время матчей, понимать, что не учитывают они, и именно такие вещи добавлять в свою стратегию», – прокомментировал Александр Логунов.