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

Отбор в финал проводится в несколько этапов. После подачи заявки участники проходят квалификационный раунд, который длится около суток, для его успешного прохождения необходимо набрать определенное число баллов. В дальнейшем проводится серия из трех раундов, каждый из которых проходит в разные дни и имеет длительность 2,5 часа каждый. После прохождения всех «фильтров», которые проводятся онлайн, остается 25 финалистов – лучших программистов мира. Их приглашают на очный тур контеста, который каждый год меняет свое место проведения. Например, в прошлом году это был Торонто (Канада), на этот раз – Сан-Франциско (США). Приз за первое место составляет 15 000 долларов.

В шестой раз подряд победителем соревнования стал аспирант Университета ИТМО Геннадий Короткевич, двукратный победитель международного чемпионата мира по программированию ICPC (2013 и 2015 годов), пятикратный победитель Яндекс.Алгоритма, а также победитель и призер других международных контестов. Такое достижение пока не удалось повторить ни одному участнику соревнований.

По итогам соревнований он набрал 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.

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

Геннадий Короткевич полностью решил четыре задачи из шести, верно отправив обе части задачи. Кроме того, он успешно справился еще с одной задачей наполовину, отправив более легкий вариант решения.