В г. Порту, Португалия, завершился финал самого масштабного и престижного мирового чемпионата по программированию — ICPC. Российские студенты-программисты продолжили многолетнюю беспроигрышную серию на турнире: в восьмой раз подряд кубок мира уезжает в нашу страну, и вновь — к победителю прошлого года, команде МГУ, впервые в истории ICPC ставшей чемпионом в одном и том же составе. Еще двум российским вузам, ВШЭ и МФТИ, достались бронзовые медали, а последний получил право принимать финал чемпионата мира в 2020 году.
Чемпионат мира по спортивному программированию, проводившийся в
В финале крупнейшего мирового первенства встретились 135 команд. Россию представляли 10 команд из пяти городов: Москвы, Санкт-Петербурга, Архангельска, Екатеринбурга и Саратова.
Наряду с кубком чемпионов, на ICPC разыгрывается по четыре медали каждого достоинства — их получают команды, занявшие первые 12 мест турнирной таблицы. Медали высшей пробы, помимо чемпиона — МГУ, завоевали Массачусетский университет технологий (2 место), Университет Токио (3 место) и Университет Варшавы (4 место). Серебряные награды получили Тайваньский национальный университет (5 место), Университет Вроцлава (6 место), Сеульский университет (7 место) и Политехнический университет имени Ким Чхэка (Северная Корея) (7 место). «Бронзу» взяли Технологический университет имени Шарифа (Иран) (9 место), Московский физико-технический институт (10 место), Высшая школа экономики (11 место) и Китайский университет Гонконга (12 место).
«Итоги чемпионата, в целом, совпали с прогнозами. МГУ был очевидным лидером, а MIT шел вторым в рейтинге. Кстати, москвичи второй раз подряд побеждают в одном и том же составе — это уникальный случай в истории финала ICPC. Стоит отметить, что в этом году список призеров стал по-настоящему глобальным: все четыре золотых медалиста — лидеры разных регионов: Северной Евразии, Северной Америки, Азиатско-Тихоокеанского региона и Европы», — прокомментировал Роман Елизаров, секретарь международного оргкомитета ICPC, председатель жюри финала ICPC в регионе Северная Евразия, тьютор факультета информационных технологий и программирования Университета ИТМО.
«Неожиданно то, что на этот раз ни одна медаль не досталась университетам материкового Китая — это Пекинский университет, Шанхайский транспортный университет и Университет Синьхуа, которые обычно входят в число фаворитов. Еще один сюрприз преподнесла Северная Корея, завоевавшая свою первую в истории медаль чемпионата. Команда Массачусетского технологического университета впервые за три года вернула США на верхнюю ступеньку пьедестала. Ряд традиционно сильных команд из России в этот раз выступили слабее, чем прежде, что можно объяснить сменой поколений. Надеюсь, это временное явление. Между тем, среди россиян появился новый медалист — команда ВШЭ, впервые получившая награду», — отметил Андрей Станкевич, тренер команд Университета ИТМО, уже много лет сохраняющего мировой рекорд по количеству побед на ICPC (семь чемпионских кубков).
Финалистам предстояло решить 11 задач за пять часов (решение задачи представляет собой программу, написанную на одном из пяти языков: Java, C, C ++, Python или Kotlin). В распоряжении команды из трех человек — всего один компьютер, поэтому, помимо логики и способности работать в жестких временных рамках, конкурсанты должны проявить навыки взаимодействия в команде. Выигрывают те, кто верно решил наибольшее количество заданий и показал лучшее время; также учитывается количество попыток решения задачи.
За ходом борьбы можно было следить в режиме реального времени по онлайн-таблице. Однако за час до окончания соревнований турнирная таблица была «заморожена» — команды видели только свои результаты и то, какие задачи пытались решить соперники. Лишь на церемонии награждения таблицу «разморозили» и стали известны имена победителей.
По словам Андрея Станкевича, уровень сложности заданий в финале этого года повысился, по сравнению с прошлым: «Первые семь задач были относительно доступны, начиная с восьмой — уже гораздо сложнее. Только 20 команд из 135 одолели семь и более задач, и лишь шестерым поддались восемь задач и более», — отметил тренер. Чемпионы, команда МГУ, решили 10 задач из 11.
Сводные результаты российских команд в финале чемпионата мира ICPC 2019: МГУ — 1 место; МФТИ — 10 место; Высшая школа экономики (Москва) — 11 место; Университет ИТМО — 17 место; Саратовский государственный университет — 31 место; Уральский федеральный университет — 34 место; Санкт-Петербургский государственный университет — 54 место; Высшая школа экономики (Санкт-Петербург) — 68 место; Северный (Арктический) федеральный университет — 102 место; Московский авиационный институт — 122 место.
В 2020 году финал ICPC впервые с 2014 года пройдет в России — чемпионат примет МФТИ.
International Collegiate Programming Contest — старейший, крупнейший и самый престижный в мире чемпионат по спортивному программированию. Соревнование проводится ежегодно с 1977 года. До 2017 года турнир проходил под эгидой Ассоциации вычислительной техники (ACM), с 2017 года — под эгидой Фонда ICPC. Долгое время в чемпионате соревновались исключительно команды университетов из США и Канады; в дальнейшем к участию стали приглашать студентов из других стран.
Российские программисты участвуют в чемпионате мира с 1993 года. Уже в
Условия чемпионата год от года остаются практически неизменными. Последнее крупное нововведение было в 2017 году: в число языков программирования, разрешенных к использованию на ICPC, был включен Kotlin, созданный российскими специалистами из компании JetBrains под руководством выпускников Университета ИТМО и признанный одним из самых перспективных языков программирования в мире. Это стало еще одним важным достижением российских разработчиков на международном уровне.
Чтобы попасть в финал чемпионата мира ICPC, команды должны пройти отбор в своем вузе, а затем региональный тур. Так, в финале ICPC по региону Северная Евразия (Россия, СНГ, страны Балтии), проходившем в начале декабря 2018 года, участвовали более 300 команд. По итогам регионального полуфинала были отобраны 16 команд, в том числе, 10 российских.
В одной команде может быть не больше трех студентов; возраст участников — до 25 лет. К участию в финале чемпионата мира допускается лишь одна команда от одного университета. Каждый из членов команды может побывать на мировом финале ICPC всего два раза.
Команде дается лишь один компьютер без доступа к Интернету или другой внешней сети. Помимо логики и умения работать в условиях жестких ограничений по времени, участники должны проявить навыки командной игры и правильного распределения ролей, которые требуются при разработке реальных программных продуктов в IT-компаниях.
За пять часов программисты должны решить от 8 до 12 алгоритмических задач. Для решения некоторых из них достаточно лишь аккуратности и внимательности. Другие требуют углубленного знания различных алгоритмов. Решение задачи представляет собой программу, написанную на одном из пяти языков программирования, разрешенных к использованию на ICPC: Java, C, C ++, Python или Kotlin.
Участники отправляют свое решение на сервер, на котором жюри заготовило набор тестовых данных. Проверка идет в реальном времени. Задача считается решенной, если программа проходит все тесты, укладывается в выставленные ограничения по количеству используемой памяти и времени выполнения.
За каждую решенную задачу начисляется штрафное время (время, ушедшее на решение задачи с начала тура). Если решение оказывается неверным, команда может исправить ошибку и вновь сделать отправку, однако за каждую проваленную попытку начисляется 20 штрафных баллов (при этом, если задача в итоге не решена, штраф не будет начислен). Побеждает та команда, которая справилась с максимальным количеством задач и заработала меньше штрафного времени.
Победители ICPC получают медали чемпионата мира и денежные призы. Командам, занявшим с первое по четвертое места, вручаются золотые медали, с пятого по восьмое — серебряные, а с девятого по двенадцатое — бронзовые. Обладатели первого места получают чемпионский кубок.