С 16 марта по 15 апреля проходил уже третий наш Открытый чемпионат по программированию для любых участников из России и других стран. В прошлый раз участвовало чуть больше 4 тысяч человек, а в этом году в первом туре на платформе Codeforces было уже целых 5 тысяч участников. Причём школьники и студенты шли поначалу наравне с опытными разработчиками и профессиональными киберспорстменами (хотя они тоже часто – студенты).
Кроме основного соревнования по олимпиадной схеме, для 50 финалистов была отдельная задача на написание AI боевого робота, сражающегося с другими роботами участников.
Правила
Турнир проходил в три раунда, два из которых — удалённые, а последний, финальный, в нашем офисе КРОК на Волочаевской, чтобы исключить «помощь зала». Соответственно, от этапа к этапу росла сложность, и из 5 тысяч человек к финалу пришло 50 лучших участников. Правила всех раундов одинаковые: нужно решить задачу с помощью любого языка и любых средств разработки. Затем зафиксировать и закоммитить решение (после чего менять его нельзя). В этот момент все другие участники видят исходный код коммита и могут «ломать» его, подставляя любые входящие данные. Если хоть один набор данных (из базовых автотестов и предложенных другими участниками) вызывает «провал» решения, оно не засчитывается, а автор входящего набора получает немного дополнительных очков.
Мы оплачивали дорогу до Москвы всем финалистам. Если в прошлом году ярко зажигал один японец, профессионально участвующий в турнирах, то на этот раз на финал приехал Якуб Сафин из Чехии.
«Ну, я хотел попасть хоть на какой-то финал, раньше не выходил… Мне понравилось, но было реально тяжело написать работающий код».
На последний тур приехали в основном довольно молодые специалисты (средний возраст около 22 лет). Многие из участников уже проходили стажировки в Google и Microsoft в США либо работают в Yandex, Intel или других крупных ИТ-корпорациях в России.
Задачи финала
Финальные задачи с решениями можно найти здесь. Сам финал и был построен вокруг этих пяти задач. Остальные задачи чемпионата мы тоже выложили в открытый доступ на следующий день после финала. Все остальные задачи с разбором с квалификации и отбора также доступны на Codeforces.
Победители
Победителем основного соревнования в этом году, как и в прошлом, стал Геннадий Короткевич под ником tourist (ИТМО, Санкт-Петербург), забравший 100 тысяч рублей. Железный человек, прямо терминатор, очень известен в тусовке.
Второе место взял Владислав Епифанов, аспирант из Нижнего Новгорода, который ранее засветился победой на Russian Code Cup и занял четвёртое место в финале Google Jam в 2012. Его приз — 70 тысяч рублей.
Кажется, в 2011 году на codeforces объявление было, что КРОК проводит соревнование по программированию. Заинтересовало, решил поучаствовать. Из призовых мест таких серьёзных у меня есть одна победа на Russian code cup, а так в тройку, наверное, больше не попадал ни разу. Я довольно часто прохожу на заключительный этап соревнований и наших всероссийских, и международных, так что какой-то опыт участия у меня есть…
Я работаю уже программистом, в принципе, наверное, этим же и буду продолжать заниматься. Спортпрограммированием занимаюсь почти с первого класса, так что большую часть жизни, можно сказать… У нас в Нижнем Новгороде был такой преподаватель Лелюх Владимир Денисович, и он со многими учениками занимался, среди его учеников было много золотых медалистов международных олимпиад, меня как-то привели на занятие к нему в первом классе, мне понравилось, я решил продолжить ходить.
Третье место и чек на 50 тысяч забрал Алексей Дмитриев (МФТИ).
Конкурс на AI воботов
Этот конкурс шёл отдельно, поскольку задачи задачами, но кроме них ещё нужно показывать реальные боевые вещи.
В этом году были классические соревнования роботов, но с батареями и минами. Каждый из участников выбирал свою стратегию боя, около 4 часов участники учили своих роботов носить батарейки, ставить мины и ловушки, стрелять и двигаться по карте.
Потом — полтора часа визуализированных боёв.
Приз за это соревнование — 50 тысяч рублей, победил Иван Белоногов (Санкт-Петербург, ИТМО). Вот он рассказывает о своей стратегии:
На таких соревнованиях обычно придерживаюсь тактики, что сначала писать хоть что-то, чтобы оно работало… — не писать что-то сложное сначала, а вот написать какие-то базовые вещи. Сначала — чтобы она стреляла в стороны, потом написал, чтобы она ходила, потом — чтобы следила за батарейками своими, сначала относила свои, потом следующие, и так пошагово её улучшал… Тут было не особо много времени, чтобы какие-то хитрые вещи делать, всё, что я добавлял, оно улучшало работу. Если б было больше времени… Остались вещи, которые я ещё не реализовал, например, работа с минами. Мне кажется, остальные участники тоже недалеко продвинулись в этом вопросе: кто-то их бросал, но чтобы это эффективно получилось, я такого не видел.
Достаточно хорошо выступал Максим Ахмедов. Ну понятно, что на предварительном тестировании всегда показываются баллы. Кажется, что команда, которая заработала много баллов, они, наверное, хорошо играют, но у меня в первых раундах были достаточно слабые результаты, мне прям казалось, что как-то не везло.
Ссылки
- Вот спецификация и конкурсное задание (PDF) на конкурс воботов.
- Задачи чемпионата
- Ещё раз разбор финальных задач
- А отчёт с прошлого российского чемпионата по программированию лежит здесь.
Автор: КРОК