Google Code Jam, который проводится ежегодно с 2003 года, считается одним из самых массовых чемпионатов программирования — контест собирает свыше 50 000 человек, ведь принять участие в нем может любой желающий.
Отбор в финал проводится в несколько этапов. После подачи заявки участники проходят квалификационный раунд, который длится около суток. Для его успешного прохождения необходимо набрать определенное число баллов. В дальнейшем проводится серия из трех раундов, каждый из которых проходит в разные дни и длится по 2,5 часа каждый.
После прохождения всех «фильтров», которые проводятся онлайн, остается 25 финалистов — лучших программистов мира. Их приглашают на очный тур контеста, который каждый год меняет свое место проведения. Например, в прошлом году это был Торонто (Канада), на этот раз — Сан-Франциско (США). Приз за первое место составляет 15 000 долларов.
В шестой раз подряд победителем соревнования стал аспирант Университета ИТМО, 24-летний Геннадий Короткевич, двукратный победитель международного чемпионата мира по программированию ICPC (2013 и 2015 годов), пятикратный победитель Яндекс. Алгоритма, а также победитель и призер других международных контестов. Такое достижение пока не удалось повторить ни одному участнику соревнований.
Геннадий Короткевич родился в Гомеле. Он окончил гимназию № 56 и сейчас учится в аспирантуре в Санкт-Петербурге. По итогам соревнований молодой человек набрал 143 балла, опередив Макото Соэджима (rng.58) из Японии и студента из MIT Эндрю Хе (ecnerwale) — оба набрали по 121 баллу. Кроме того, в списке финалистов выпускник Университета ИТМО, чемпион ICPC 2015 года Борис Минаев (56 баллов) и еще один выпускник альма-матер чемпионов Евгений Капун (54 балла).
Ознакомиться со всеми результатами можно в итоговой таблице.
Добавим, что чемпионат состоит из набора алгоритмических задач, которые должны быть решены за фиксированное время. С прошлого года код участников запускается на тестирующих компьютерах компании. Для работы финалисты должны были использовать один из языков: Bash, C, C++, C# (mono), Go, Haskell (ghc), Java 8, Javascript (nodejs), Python 2, Python 3, PHP, and Ruby.
В этом году финалисты должны были решить шесть задач, каждая из которых имеет два условия решения. Первое — более легкое для участника, так как для решения задачи подходит менее эффективный алгоритм, а перед программистом стоит меньше ограничений. Как только участник отправил решение, ему сразу же приходит ответ, верное ли оно. Если ответ не приходит, программист может перепроверить решение и отправить ответ снова. Вторая часть каждой задачи требует более сложных алгоритмов. Кроме того, правильность их решения участник узнает только на церемонии награждения победителей. В соревнованиях также учитывается общее время решения задач.
Геннадий Короткевич полностью решил четыре задачи из шести, верно отправив обе части задачи. Кроме того, он успешно справился еще с одной задачей наполовину, отправив более легкий вариант решения.