Программисты университета итмо – семикратные чемпионы acm icpc! Российские программисты стали чемпионами мира, обойдя Гарвард и MIT

Всего в олимпиаде участвовало 2736 команд из вузов 102 стран. В финал прошли 128 команд, из них 12 — российские. Студенты СПбГУ одержали победу в чемпионате и смогли обойти команды Шанхайского университета, Гарварда и Массачусетского технологического института. Чемпион 2015 года команда ИТМО заняла седьмое место.

Кроме этого, в первую десятку попали представители еще трех российских вузов: МФТИ, УрФУ и ННГУ.

Чемпионат по программированию ACM ICPC проводится с 1977 года, Россия в нем участвует с 1993 года. За это время Россия десять раз побеждала в соревновании; шесть побед, включая прошлый год, достались студентам Университета ИТМО. Команда СПбГУ побеждала также в 2014 году.

Призеры олимпиады получили приглашения на стажировку в исследовательских офисах компании IBM и в других международных IT-компаниях.

В состав команды СПбГУ вошли Игорь Пышкин, Станислав Ершов и Алексей Гордеев. Тренером команды выступает сотрудник соцсети «ВКонтакте», которая является одним из спонсоров команды, Андрей Лопатин. Корреспондент «Газеты.Ru» пообщался со Станиславом, и он рассказал о своих впечатлениях от чемпионата.

— Как настроение и впечатления от чемпионата?

— Лучше не бывает!

— Как проходил чемпионат?

— Финал чемпионата длится пять часов. Участники получают несколько задач. Например, в этом году было 13 задач. Все они математические: нужно сначала догадаться до идеи решения, придумать алгоритм, а уже затем писать код.

Выигрывает та команда, которая решила больше всех задач, а среди таких — команда с наименьшим штрафным временем. Кроме финала есть еще отборочные соревнования. Сначала примерно в октябре проходят четвертьфиналы, а в декабре — полуфиналы.

— Почему решили принять участие в ACM ICPC?

— Мы все уже много лет занимаемся программированием, поэтому не могли не попробовать свои силы в главном чемпионате в этой области. У нас у всех троих специальность «математика», а программирование мы самостоятельно изучаем, на тренировках например.

— Как проходили подготовки к соревнованию?

— Мы готовились весь год. Писали по три тренировки в неделю. Каждая тренировка по пять часов, как на настоящем чемпионате, чтобы подготовиться к тому, что будет на финале.

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

Несколько раз ездили на сборы. Там тренировки были уже каждый день. Последние сборы закончились за неделю до финала, с тех пор мы приехали в Таиланд и решили отдохнуть перед соревнованием.

— Какие команды вызывали наибольшие опасения?

— В этом году было очень много сильных команд, многие из которых были примерно наравне с нами. На мой взгляд, было около 10 команд, каждая из которых вполне могла выиграть соревнование.

Наиболее сильными мы считали команду из Шанхая и из Варшавы. Шанхайская команда заняла второе место, показав результат совсем немного хуже нашего, всего на семь штрафных минут. У Варшавы плохо решались задачи на старте, поэтому они в итоге выступили не так хорошо, как мы ожидали. Также особую «опасность» представляли ИТМО и Урал.

— Как ты оцениваешь уровень российских программистов на мировой арене?

— Уже более пяти лет чемпионами мира становятся то университет ИТМО, то СПбГУ. В этом году в первой десятке пять российских команд. Так что уровень, на мой взгляд, очень хороший.

— Государство как-то поддерживает вашу команду или вуз?

— Обычно либо разные частные компании нас спонсируют, либо университет.

— Поступали уже предложения от работодателей, зарубежных или отечественных?

— Лично мне еще не поступали. Сокомандники говорят, что пока в основном есть предложения только от WorldQuant. Это зарубежная фирма, но работу они предлагают, скорее всего, в Петербурге.

— Какие планы на будущее?

— Я сейчас только заканчиваю второй курс матмеха СПбГУ. В университете я изучаю математику, а не программирование.

Вполне возможно, что я уеду за рубеж, если там будет возможность работать в интересном проекте.

Но пока я об этом не думаю, потому что для начала нужно окончить университет. Остальные в команде вроде уже решили, что математикой профессионально заниматься не будут, а я еще не определился.

С 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 тысяч рублей, победил Иван Белоногов (Санкт-Петербург, ИТМО). Вот он рассказывает о своей стратегии:

На таких соревнованиях обычно придерживаюсь тактики, что сначала писать хоть что-то, чтобы оно работало… - не писать что-то сложное сначала, а вот написать какие-то базовые вещи. Сначала - чтобы она стреляла в стороны, потом написал, чтобы она ходила, потом - чтобы следила за батарейками своими, сначала относила свои, потом следующие, и так пошагово её улучшал… Тут было не особо много времени, чтобы какие-то хитрые вещи делать, всё, что я добавлял, оно улучшало работу. Если б было больше времени… Остались вещи, которые я ещё не реализовал, например, работа с минами. Мне кажется, остальные участники тоже недалеко продвинулись в этом вопросе: кто-то их бросал, но чтобы это эффективно получилось, я такого не видел.

Достаточно хорошо выступал Максим Ахмедов. Ну понятно, что на предварительном тестировании всегда показываются баллы. Кажется, что команда, которая заработала много баллов, они, наверное, хорошо играют, но у меня в первых раундах были достаточно слабые результаты, мне прям казалось, что как-то не везло.

Российские студенты в седьмой раз подряд стали победителями чемпионата мира по программированию ACM ICPC в Пекине. С 2000 года это уже 13-я победа участников из РФ. Первое место заняла команда из Московского государственного университета (МГУ). На втором - Московский физико-технический институт (МФТИ), на третьем - Пекинский университет. Команда победителей получит денежное вознаграждение в $15 тыс. Ранее первые места на этих соревнованиях занимали команды Санкт-Петербургского госуниверситета (СПбГУ), Санкт-Петербургского университета информационных технологий, механики и оптики (ИТМО) и Саратовского государственного университета. Впрочем, в экспертном сообществе не склонны переоценивать успехи российских программистов, напоминая о проблемах в общем уровне подготовки учащихся.


В Пекине завершился финал чемпионата мира по программированию ACM ICPC - крупнейшей студенческой олимпиады в этой дисциплине. В финале первенства в этом году приняли участие 140 команд из 51 страны. От России выступали 11 команд, представляющих Московский физико-технический университет, Московский государственный университет, Университет ИТМО (Санкт-Петербург), Санкт-Петербургский государственный университет, Высшую школу экономики, Московский авиационный институт, Новосибирский государственный университет, Пермский государственный университет, Саратовский государственный университет, Академический университет (Санкт-Петербург) и Уральский федеральный университет (Екатеринбург).

Российские участники завоевали кубок мира и четыре медали из 13 - больше, чем любая другая страна.

Команды из Китая и США получили по три медали, по одной - у Японии, Кореи и Литвы.

Кубок мира впервые выиграла команда МГУ Red Panda, решив 9 задач из 12 предложенных. «Наши ребята - лучшие! Гордимся»,- говорится в сообщении пресс-службы МГУ. «Это первая абсолютная победа МГУ в ICPC»,- сообщили “Ъ” в университете. В состав команды (традиционно она состоит из трех человек) входят Михаил Ипатов (студент мехмата), Владислав Макеев и Григорий Резников (факультет вычислительной математики и кибернетики). Тренером команды является завкафедрой информатики специализированного учебно-научного центра (СУНЦ) имени А. Н. Колмогорова МГУ Елена Андреева.

«Команды МГУ участвуют в студенческом командном чемпионате мира по программированию более 20 лет,- заявила госпожа Андреева после подведения итогов первенства.- Многие из них завоевывали медали чемпионата, несколько раз останавливались в шаге от победы, занимая второе место. В этом году впервые наша команда завоевала титул чемпиона мира, опередив как сильнейшие российские команды МФТИ и ИТМО, так и лучшие зарубежные - команды университетов Пекина, Сеула и Токио».

Чемпионат по программированию проводится с 1970-х годов, с 2000 года в нем начали побеждать команды российских вузов: первыми тогда стали студенты СПбГУ.

С 2012 года в этой олимпиаде побеждают только российские команды.

Рекордсмен по количеству побед среди российских команд - Университет ИТМО (занимал первое место семь раз, в том числе в 2017 году). В этом году команда Университета ИТМО опустилась на девятую позицию, решив 7 задач из 12. При этом ИТМО остался третьим среди российских вузов-участников олимпиады. «Программирование становится настоящим интеллектуальным спортом будущего, не менее интересным, чем, например, шахматы, и в данной дисциплине ребятам из России нет равных»,- прокомментировал успехи российских студентов вице-президент Российского союза ректоров, ректор Университета ИТМО Владимир Васильев.

Кроме команды МГУ среди самых лучших оказались команды МФТИ (второе место) и университетов Пекина и Токио, решившие 8 из 12 задач и удостоенные золотых медалей.

С результатом 7 из 12 соревнования завершили Сеульский национальный университет, университет Нового Южного Уэльса, университет Цинхуа, Шанхайский университет, ИТМО, Массачусетский технологический институт, университет Вильнюса и Уральский федеральный университет.

«Команда физтеха показала высокий результат, они уверенно шли к победе весь год, показали лучший результат за всю историю участия МФТИ в соревнованиях, с чем можно поздравить команду Cryptozoology! Мы гордимся нашими студентами»,- сообщил Алексей Малеев, руководитель команды, директор Центра ИТ-образования МФТИ. «Москва имеет самое большое представительство среди всех городов мира - сразу четыре университета (среди 13 лучших.- “Ъ” ) отстаивают честь страны,- отметил господин Малеев.- Более того, 10 из 13 прошли школу Moscow Workshops ICPC на базе МФТИ». «Это доказывает, что программистское образование у нас в стране - одно из лучших в мире. Поздравляем команду МФТИ и всех российских программистов!» - подчеркнул ректор МФТИ Николай Кудрявцев.

В ICPC соревнуются команды из трех студентов не старше 25 лет. К участию в чемпионате не допускаются студенты, дважды участвовавшие в мировом финале. В распоряжении команды - всего один компьютер, поэтому помимо логики и умения работать в жестких временных рамках конкурсанты должны проявить навыки взаимодействия в команде и грамотно распределить роли. Побеждает команда, которая правильно решила наибольшее количество задач и при этом показала наилучшее время; также учитывается количество сделанных попыток, или «посылок» (так называют решение задачи, отправленное на проверку на тестирующий сервер).

Все призеры ICPC получают денежную премию: команда чемпионов - $15 тыс.; команды, завоевавшие золотые медали,- по $7,5 тыс.; серебряные призеры - по $6 тыс., а команды, взявшие бронзу,- по $3 тыс.

Победу российских студентов не стоит переоценивать, считает главный научный сотрудник Института проблем информатики РАН Константин Колин. «Выиграли и выиграли, речь идет о единичном успехе: это элита, которую готовят в ведущих вузах, а нужно посмотреть на общий уровень подготовки школьников и студентов»,- сказал эксперт в беседе с “Ъ”. По его словам, социологические опросы, проведенные среди московских школьников в прошлом и нынешнем годах, показали, что «34% школьников считают, что солнце вращается вокруг Земли». «Маразм крепчал, а правительством принята программа ""Цифровая экономика"", которая требует высококвалифицированных специалистов. Для того чтобы их подготовить, необходима революция в образовании, и начинать нужно с педагогов. Мы много об этом говорим, но пока, к сожалению, в Министерстве образования нас не слышат»,- заключил эксперт. В Минобрнауки победу российских студентов на международной олимпиаде “Ъ” оперативно прокомментировать не смогли.

Анна Макеева, Валерия Мишина

В Рапид-Сити (США) 24 мая состоялась кульминация Чемпионата мира по программированию ACM ICPC-2017 . Абсолютными чемпионами стала команда Университета ИТМО, решившая 10 задач из 12 быстрее и грамотнее соперников. Таким образом, петербургский вуз установил новый рекорд в истории контеста: сборные Университета ИТМО в седьмой раз стали победителями ACM ICPC, что еще не удавалось ни одному вузу в мире. Чемпионский кубок над головой подняли студенты кафедры компьютерных технологий Владимир Смыкалов, Иван Белоногов и Илья Збань. В этом году в финале самого престижного соревнования среди программистов участвуют 133 команды из всех регионов мира, состязания проходили уже в 41 раз.

Награждение команды Университета ИТМО

Сборная вуза смогла правильно решить 10 задач из 12, потратив на это наименьшее количество времени. Именно время решения задач и меньшее число неудачных попыток их сдачи обеспечило команде седьмой кубок ACM ICPC. Другие «золотые» команды, составившие четверку лидеров контеста, также решили по десять задач. Буквально на пятки чемпионам мира наступала команда Варшавского университета, бывшая фаворитом ACM ICPC-2017. На третьей позиции программисты из Сеульского национального университета. С четвертым результатом финишировала команда СПбГУ - чемпион прошлого года. Сборная Университета ИТМО состоит из студентов факультета информационных технологий и программирования Владимира Смыкалова (первый курс магистратуры кафедры КТ), Ивана Белоногова (четвертый курс бакалавриата кафедры КТ) и Ильи Збаня (четвертый курс бакалавриата кафедры КТ). Главным тренером команды выступил доцент кафедры компьютерных технологий , кандидат технических наук Андрей Станкевич , который подготовил не одно поколение спортсменов-программистов. В 2016 году он получил престижную награду ACM ICPC Senior Coach Award за то, что в течение 15 лет его подопечные проходили в финал конкурса.

«Соревнование прошло удивительно гладко, - делится впечатлениями Иван Белоногов . - В некоторых задачах мы интуитивно положились на факты, которые не могли доказать полностью, и чутье нас не подвело. Нам удалось сдать 10 задач фактически за четыре часа, и это дало хороший запас уверенности. Но только в самом конце, когда мы сдали десятую задачу, я подумал: "Окей, видимо, получится взять золото!"».

Призерами стали также другие российские команды: команда МФТИ уедет с «серебром» ACM ICPC, а Уральский федеральный университет с «бронзой» контеста . Всего в этом году Россию представляли 13 команд - на одну больше, чем в прошлом году, в том числе по три из Москвы и Санкт-Петербурга, а также из других городов: Саратова, Перми, Петрозаводска, Новосибирска, Самары, Томска и Екатеринбурга. Команды из РФ участвуют в чемпионате с 1993 года, а с 2000 года побеждали в соревновании уже 12 раз, включая этот год.

С полной таблицей результатов можно ознакомиться по ссылке .

«Все команды, вошедшие в ТОП-12, не раз назывались в списках фаворитов - больших сюрпризов не было. По сравнению с прошлым годом, мощный рывок показали азиатские вузы: в прошлом году им досталось всего две медали, а сейчас - целых семь. Однако в каждом регионе много сильных команд, и конкуренция все обостряется» , - комментирует наставник команды Университета ИТМО Андрей Станкевич .

Последний час соревнований, признался тренер, был для него не менее волнующим, чем для его подопечных.

«После того как турнирная таблица замораживается, никаких способов показать тренеру, сдана ли задача, у ребят нет, но в этот раз, видя изображение с экрана их компьютера в ходе трансляции, я заметил, что после отправки последней задачи, G, они быстро переключились на страницу с результатами, и подумал: значит, все хорошо, сдали. Это была не та задача, от которой стоило бы отказаться при неправильном ответе» , - делится тренер.

Традиционно, как и в этом году, контест проходил в течение пяти часов. За это время участники должны решить практико-ориентированные задачи. Особенность соревнований в том, что команды из трех человек сидят перед одним компьютером. Поэтому помимо логики и умения работать под давлением, они должны проявить навыки командной игры и правильного распределения ролей. Для того, чтобы решить некоторые задачи, достаточно лишь аккуратности и внимательности, отмечают организаторы чемпионата. Для других же заданий требуется углубленное знание различных алгоритмов. Результатом работы команды чаще всего является некое программное обеспечение, которое соответствует поставленным условиям. Задачи проверяются автоматически по тестам, которые заранее составляются жюри, проверка решений идет в реальном времени. Учитывается полнота и скорость выполнения задания, а также количество попыток, которое сделала команда при решении той или иной задачи. Не всегда команды успевают справиться со всеми. Такие жесткие условия соответствуют реальной жизни: ведь клиент может просто отказаться от услуг программиста, если второй впустую тратит время и ресурсы первого.

Чтобы попасть в финал ACM ICPC, нужно было сначала пройти местный отбор в собственном университете. Обычно в этих мероприятиях участвуют более 300 тысяч человек. Затем проходят , в которых определяются лидеры, достойные финала. Чемпионы ICPC получает кубок Чемпионата мира и солидную денежную премию, которая в этом году равняется 15 000 долларов США. Остальные команды-призеры также не уезжают без материального вознаграждения.

Чемпионат по спортивному программированию International Collegiate Programming Contest проводится ежегодно c 1977 года под эгидой Ассоциации вычислительной техники (ACM, штаб-квартира в Нью-Йорке). В этом году ACM ICPC вновь поставил новый рекорд по количеству участников. Всего в региональных отборочных этапах участвовал 46 381 студент из почти трех тысяч университетов. В прошлом году в ходе чемпионата состязались чуть более 40 000 программистов. По статистике организаторов мероприятия, количество участников увеличилось на 2000% с 1997 года, года, когда чемпионат стала поддерживать компания IBM.