Геннадий Короткевич и его ошеломляющие достижения в спортивном программировании

Логотип компании
Геннадий Короткевич и его ошеломляющие достижения в спортивном программировании
Пятый раз подряд турнирную таблицу Google Code Jam возглавил Геннадий Короткевич. За всю историю турнира таких результатов не смог добиться никто - другим программистам удавалось завоевать титул победителя максимум два раза подряд.

В первой половине августа 2018 г. в Торонто прошли международные соревнования по программированию Google Code Jam, которые ежегодно на протяжении последних 15-ти лет организует и проводит компания Google. Пятый раз подряд турнирную таблицу возглавил Геннадий Короткевич, представляющий Беларусь, который набрал по итогам чемпионата 104 балла. За всю историю турнира таких результатов не смог добиться никто - другим программистам удавалось завоевать титул победителя максимум два раза подряд.

Google Code Jam – один из самых популярных и самых массовых чемпионатов по программированию. Первое такое соревнование компания провела в 2003 г. Победители и участники, продемонстрировавшие свои успешные навыки по программированию в ходе проведения чемпионата, получают возможность работы на корпорацию Google, а также становятся желанными кандидатурами для самых успешных IT-компаний мира.

В текущем 2018 г. число программистов, зарегистрировавшихся для участия в этом мероприятии, превысило 60 тыс. Приз за первое место Google Code Jam составляет $15 тыс.

Чемпионат состоит из набора алгоритмических задач, которые необходимо решить в течение определенного времени. Задачи состоят из двух частей. Для решения первой части подходит менее эффективный алгоритм, а перед программистом стоит меньше ограничений. После отправки решения участнику сразу приходит ответ, и если решение оказалось неверным, его можно перепроверить и снова отправить на проверку еще раз. Решение второй части каждой задачи требует более сложных алгоритмов, а правильность их решения участник узнает только на церемонии награждения победителей. В соревнованиях учитывается не только количество баллов, которое участник набрал за решение задач, но и общее время, которое он потратил.

Все раунды Google Code Jam, за исключением финального, проводятся в режиме онлайн. Для решения задач можно выбрать один из языков программирования - Bash, C, C++, C# (mono), Go, Haskell (ghc), Java 8, Javascript (nodejs), Python 2, Python 3, PHP или Ruby.

Первый раунд – квалификационный - длится около 24-х часов. Для его прохождения требуется набрать определенное число баллов, что удается примерно половине всех участников. Затем проходит серия из раундов 1A, 1B и 1C, каждый из которых длится по 2,5 часа. Для участия в третьем раунде отбирается 500 человек, а по его завершению остаются лишь 25 финалистов.

Финал Google Code Jam принимают каждый год разные страны. В этом году он проходил в Торонто – крупнейшем городе Канады и финансовом центре провинции Онтарио. Финалистам поручили задание, состоящее из пяти задач: двух более простых Jurisdiction Restrictions и Two-Tiling и трех более сложных Go, Gophers!, Swordmaster и The Cartesian Job. Решить их нужно было за четыре часа.

Тройка лидеров определилась буквально на последних минутах. Первое место занял Геннадий Короткевич (Беларусь) с итогом в 104 балла, второе - Камил Дебовски (Польша) с результатом в 96 баллов, и третье - Макото Соэджима (Япония) с 86-ю баллами. Интересно отметить, что такое же количество баллов – 86 – набрал и Михаил Ипатов (МГУ им. Ломоносова), но ему пришлось уступить место в тройке финалистов программисту из Японии, поскольку тот решил задачи быстрее.

Стоит отметить, что в текущем 2018 г. в правила проведения Google Code Jam, остававшихся неизменными на протяжении последних 10-ти лет, были внесены существенные изменения. Например, если в прошлые годы участники могли выбирать ОС из двух вариантов - Windows или Linux, то в этот раз единственным вариантом была ОС Linux. Кроме того, если раньше участники сами запускали свои решения, то теперь код участников запускается на тестирующих компьютерах членов жюри. Как заявил победитель чемпионата Геннадий Короткевич в беседе с представителями СМИ, окружение оказалось немного непривычным, поэтому было важно не тратить много времени на технические вопросы и сконцентрироваться на главном. Победу, в итоге, принесло решение задачи Two-Tiling. Времени на это потребовалось много — около 1,5 часов, да и решить ее смогли лишь очень немногие участники.

Геннадий Короткевич родился в 1994 г. в Гомеле в семье программистов. Сам заниматься программированием начал еще в 8 лет, а уже в возрасте 11-ти лет впервые принял участие в Международной олимпиаде по информатике, где занял 2-е место. В 2012 г. стал третьим в турнире VK Cup, а в 2015 и 2016 гг. возглавил турнирную таблицу.

В 2014 г. Г. Короткевич выиграл все пять важнейших личных соревнований в спортивном программировании - TopCoder Open, Google Code Jam, Facebook Hacker Cup, Russian Code Cup и «Яндекс.Алгоритм». Ему принадлежит титул чемпиона мира по программированию среди университетских команд ACM ICPC в 2013 г. и 2015 г. в составе команды ИТМО. В 2014 и 2015 гг. победил в Facebook Hacker Cup, и в том же 2015 г. стал чемпионом ZeptoCodeRush. Неоднократно побеждал в соревнованиях «Яндекс.Алгоритм», и входил в тройку лидеров в турнире Russian Code Cup.

В 2018 г. он закончил обучение на кафедре компьютерных технологий Факультета информационных технологий и программирования в Санкт-Петербургском национальном исследовательском университете информационных технологий, механики и оптики (Университет ИТМО, государственный вуз Санкт-Петербурга, национальный исследовательский университет России). Сегодня он - аспирант Университета ИТМО и один из самых титулованных спортсменов в области программирования во всем мире.

Опубликовано 20.08.2018