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

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

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

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

В Рапид-Сити (США) 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.

В эти выходные в Санкт-Петербурге состоялся региональный тур чемпионата по программированию TopCoder Open — в число победителей вошли шесть студентов и выпускников Университета ИТМО. Теперь им предстоит сразиться с победителями других региональных туров за два места в финале чемпионата, который пройдет с 18 по 21 ноября в Вашингтоне (США).

TopCoder Open 2016: как устроен личный чемпионат по программированию и кто победил в региональном этапе

В число финалистов TopCoder Open войдут восемь лучших участников онлайн-туров, которые стартовали еще в марте . Еще два места зарезервированы для участников очных региональных соревнований: десятки победителей каждого из региональных этапов разыграют их в ходе так называемого Wildcard Round. На первый взгляд, очные турниры — самый простой способ попасть в финал за минимальное количество шагов, так как в онлайне необходимо обойти тысячи программистов из разных стран. Однако на очные мероприятия съезжается цвет мирового спортивного программирования — победители всевозможных чемпионатов, олимпиад и хакатонов, и занять первые строчки рейтинга здесь гораздо сложнее.


3 сентября на петербургский этап TopCoder Open Algorithm пришли 56 человек. У каждого — свой ноутбук, кто-то захватил тройник или удлинитель: по опыту предыдущих соревнований, розеток хватает не на всех. Для участия в турнире нужно зайти на «арену» TopCoder : все задания, разработанные эксклюзивно для регионального этапа, раздаются, выполняются и проверяются здесь. За решение каждой выдается определенное количество очков, и «стоимость» задачи начинает снижаться сразу после того, как участник открыл условия. Для самой простой задачи с максимальной стоимостью в 250 очков нужно вычислить наименьшее количество ходов, за которое можно победить противника в пошаговой RPG, если у игрока в распоряжении два вида атаки — normalAttack и buffedAttack. По словам Лидии Перовской, решить ее может даже обладатель базовых навыков программирования; однако турнирных задач три, две оставшиеся значительно сложнее, и в общей сложности на фазу кодинга отводится всего 85 минут.


«Когда участник отправляет ответ, результат ему сообщается только по итогам предварительных тестов — по сути, в его решение подставляются только условия из задачи. Но после фазы Coding наступает очень важная фаза Challenge, в ходе которой каждый участник проверяет на ошибки чужое решение. Если он найдет случай, в котором решение выполняется неверно или слишком долго, он может заработать дополнительные очки и отыграть время, потерянное во время фазы кодинга. Для этого нужно придумать тест, на котором решение даст неправильный ответ: например, если оппонент не рассмотрел частный случай, в котором какой-то из входных параметров будет иметь значение „0“, и делит на него, — объясняет Лидия Перовская. — Забавно то, что эти случаи могут быть добавлены к общему набору тестов, и твое решение может „упасть“ на твоем же тесте. Часто бывает и так, что человек своим тестом „заваливает“ большое количество чужих решений, но зарабатывает только 50 очков за одного оппонента» .


По результатам петербургского TopCoder Open Algorithm решения всех трех задач отправили только два участника — двукратный чемпион ACM ICPC Геннадий Короткевич и двукратный серебряный медалист ACM ICPC Петр Митричев , однако системные тесты прошло только решение Митричева. Шестеро из десятки победителей регионального тура — выпускники и студенты Университета ИТМО: Адам Бардашевич , Борис Минаев , Нияз Нигматуллин , Илья Збань и Вадим Семенов . Кроме того, в число лучших вошли студенты СПбГУ Айдар Сайранов и Игорь Пышкин , выпускник МФТИ Яков Длугач и выпускник МГУ Егор Куликов . Сразиться за участие в финале TopCoder Open с победителями других региональных раундов им предстоит 10 сентября.

С.-ПЕТЕРБУРГ, 19 мая — РИА Новости. Команда Санкт-Петербургского государственного университета победила на студенческом чемпионате мира по программированию Ассоциации вычислительной техники (ACM-ICPC), сообщается на сайте вуза. Кроме того, команда МФТИ заняла на этом чемпионате 4 место и получила золотые медали, а еще три российских вуза — ИТМО, УРФУ и ННГУ — стали призерами.

"Наши студенты — Игорь Пышкин, Алексей Гордеев, Станислав Ершов — под руководством Андрея Лопатина решили несколько сложных задач за кратчайшее время и показали лучшие результаты", — отмечается в сообщении.

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

Студенты СПбГУ уже выигрывали чемпионат мира в 2000, 2001 и 2014 годах. Университет ИТМО (университет информационных технологий, механики и оптики) становился абсолютным чемпионом ACM ICPC в 2004, 2008, 2009, 2012, 2013 и 2015 годах.

МФТИ, в свою очередь завоевал второе в своей истории золото —первые медали программисты из Долгопрудного завоевали в 2012 году, на чемпионате в Варшаве.

"Мы начали активно заниматься олимпиадами по программированию в МФТИ примерно одновременно с запуском учебных программ по Computer Science в 2011 году. С тех пор мы регулярно выходим в финал ACM ICPC. Финал этого чемпионата — это сотня сильнейших команд, сотня сильнейших вузов в области ИТ. Просто попасть в их число — это уже очень престижно для многих", — рассказывает Алексей Малеев, директор Центра развития ИТ-образования в МФТИ.

Российские программисты на чемпионате мира: привычка побеждать На минувшей неделе в Марракеше наши программисты выиграли чемпионат мира, заняв два первых места. Об особенностях этой победы рассказывает побывавший на чемпионате Андрей Анненков.

На протяжении трех последних десятилетий чемпионат ICPC — самое престижное в мире интеллектуальное состязание молодых программистов. Соревнование проводится под эгидой международной Ассоциации вычислительной техники ACM при поддержке компании IBM.

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

Первое командное соревнование по программированию под эгидой ACM прошло в Техасском университете в 1970 году. Нынешний формат чемпионат принял в 1977 году, когда его первый финал был проведен в рамках ежегодной конференции ACM по информатике.