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

Российские студенты выиграли чемпионат мира по программированию April 20th, 2018

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

Ну и вот вам закономерная новость. В Пекине завершился финал чемпионата мира по программированию ACM ICPC. Российские вузы традиционно показали высокие результаты: команда МФТИ взяла золото и заняла второе место, команда МГУ — первое. Команды Университета ИТМО и Уральского федерального университета получили бронзовые медали.

Все российские команды завоевали 4 медали из 13 — это больше, чем у других стран. У США и Китая — по 3. По одной у Японии, Кореи и Литвы.

ACM ICPC — один из главных всемирных студенческих чемпионатов по программированию. Российские программисты лидируют на мировом первенстве уже много лет. С 2000 года команды из нашей страны побеждают в ICPC уже в 13 раз.

«Российские участники завоевали кубок мира и четыре медали из 13 — больше, чем остальные страны-участники: команды из Китая и США получили по три медали, по одной — у Японии, Южной Кореи и Литвы. Первое место и кубок чемпионов завоевал МГУ. „Золото“, помимо МГУ, получили МФТИ, Пекинский университет и Токийский университет. „Серебро“ досталось Сеульскому университету, Университету Южного Уэльса, Университету Синьхуа и Шанхайскому университету Джао-тонг. „Бронзу“ завоевали Университет ИТМО, Университет Центральной Флориды, Массачусетский университет технологий, Вильнюсский университет и УрФУ», — отметили в пресс-службе МФТИ.

Чемпионат уходит своими корнями в соревнование, проводившееся в Техасском университете в 1970-х годах. Ныне чемпионат проводится ежегодно под эгидой ассоциации вычислительной техники (ACM). В разное время спонсорами соревнований становились такие компании, как Apple, AT&T, Microsoft и IBM.

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


Тур олимпиады происходит следующим образом: каждой команде на пять часов выдаётся компьютер и от восьми до двенадцати задач, условия которых написаны на английском языке. Интересно, что команды пишут решения не просто текстом, а на языках программирования C, C++ или Java и посылают их на тестирующий сервер.

Команды из РФ участвуют в ICPC с 1993 года. Шесть лет, с 2012 по 2017 год, кубок мира передавали друг другу две петербургские команды — СПбГУ и Университет ИТМО, обладающий мировым рекордом по количеству чемпионских титулов: на счету у него семь кубков. У ближайших зарубежных соперников, американского Стэнфорда и китайского Университета Джао Тонг — всего по три победы.

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

источники

DataArt давно дружит с командой ИТМО по спортивному программированию и помогает ей. Этим летом в гости в наш петербургский центр разработки пришли Илья Збань, Иван Белоногов и Владимир Смыкалов. Чемпионы мира 2017 года рассказали о том, как именно программисты соревнуются между собой, о тренировочных сборах, любимых задачах и сильнейших соперниках.

Олимпиада по программированию

Главное соревнование программистов - международная студенческая олимпиада под эгидой ACM (ACM-ICPC, или просто ICPC) - проходит с 1970-х, а в виде, близком к сегодняшнему, оформилась в 1989 году. Олимпиада предназначена для студентов и аспирантов, за редким исключением к соревнованиям не допускают программистов старше 24-х лет. К тому же, испытывать силы в финале можно только дважды, а в региональных отборах разрешается участвовать всего пять раз. На ранних этапах, проходящих по всему миру, соревнуются тысячи команд. Около сотни лучших доходят до финала.

Основные правила

Команды состоят из трех человек, при этом в распоряжении каждой команды - только один компьютер. Перед началом соревнования всем выдаются конверты с задачами алгоритмического или математического характера - от восьми до 13 штук - которые нужно решить за пять часов. Решение задачи - программа, считывающая текстовый запрос и выдающая текстовый ответ. Для проверки решение прогоняется примерно на сотне тестов, заранее подготовленных жюри, - верным оно признается, только если ответ получается правильным в каждом из тестов.

Правила ICPC очень доходчиво изложены в ролике , выпущенном к чемпионату Урала по программированию - одному из первичных этапов отбора на Олимпиаду. Они едины для всех регионов и с 2013 года остались без изменений.

Языки и среда

В финале 2017 года можно было использовать языки Java, C++ и Python. Впрочем, понятно, что Python в принципе не очень быстрый - жюри не гарантировало, что на нем можно будет сдать задачу. Однако оно давало гарантии, что у них есть решения, написанные на этих языках, которые проходят все тесты.

На разных соревнованиях набор языков может быть различным. Например, на онлайн-платформе Codeforces допускается около 20 языков: от C++ и Java до Haskell и Perl.

Большинство команд в финалах пишет на C++ , поскольку на первый план выходит скорость. В качестве среды разработки многие команды используют VIM (в нем, например, работали Иван и Илья) или Gina (в ней работал Владимир). Те, кто все же пишет на Java, как правило пользуются средой вроде Eclipse, поскольку писать на Java без автокомплита гораздо сложнее.

В ближайшее время можно ждать изменений, поскольку финалы теперь будет спонсировать JetBrains (20 лет до конца мая 2017 года спонсором ICPC был IBM). Это значит, что на них появится и продукция спонсора: IDEA для Java и CLion для С++. Возможно, после этого команды начнут широко пользоваться отладчиками, хотя пока чаще справляются без них.

Эволюция задач

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

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

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

Примеры задач

Задачи бывают разными: на графы, строки, геометрию и т. д. Допустим, рассчитать кратчайший путь между городами на карте. Или построить максимально длинную взлетно-посадочную полосу на острове, представленном в виде невыпуклого многоугольника. Задачей может быть сравнение текстов - поиск наибольшей общей подстроки для пары строк.

Еще один формат - интерактивные задачи, где вам предлагают поиграть в какую-нибудь игру с системой, написанной жюри. В одном из полуфиналов нужно было написать программу, способную в 90 % случаев выигрывать у предложенного алгоритма в крестики-нолики. Задачи с прошлых финалов, включая последний, можно посмотреть .

Процесс решения

В основном участники команд разбирают листы с условиями в зависимости от личных предпочтений: кто-то больше любит задачи на строки, кто-то - на геометрию. В целом индивидуальная работа здесь преобладает над командной.

Первым делом нужно придумать алгоритм решения одной из задач. Иногда автор решения обсуждает его с командой, чтобы убедиться - решение получается математически правильным. После этого автор садится писать код - двое других участников в это время продолжают думать над решениями остальных задач. Когда код написан, его можно проверить на тестовых примерах, которые обычно прилагаются к условию, и отправлять в систему для оценки. Поскольку компьютерное время ограничено (напомним, что компьютер у участников всего один), на соревнованиях всегда присутствует принтер: если решение не работает, кто-то - обычно его автор - ищет ошибки, распечатав код на бумаге.

Особенности кода

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

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

Алгоритмы

Мы знаем довольно много алгоритмов, используем разные структуры данных: дерево отрезков, дерево Фенвика, декартово дерево и т. д. Иногда сбалансированное дерево поиска приходится писать самостоятельно, параллельно модифицировав его так, чтобы оно считало информацию, определенную условием задачи. Например, в языке С++ есть структура множества, которая умеет поддерживать множество чисел и, например, находить следующее. Задача же может требовать найти не следующее число, а сумму всех чисел, меньших или равных заданному. Стандартными структурами реализовать это не получится.

Приносить какие-то фрагменты коды с собой нельзя, но на чемпионате мира разрешается пользоваться так называемым team reference - распечатанным на бумаге набором алгоритмов. Хотя многое мы умеем писать с ходу, в этом году немало времени потратили на его подготовку - тестировали более сложные алгоритмы. Но в итоге записями не воспользовались вообще.

Объем кода напрямую не влияет на итоговую оценку, другое дело, что 1000 строк написать за отведенное время сложно. А придумав красивое лаконичное решение, можно уложиться всего в 10–15 минут. Именно под поиск таких изящных путей и заточены большинство условий: средний объем решения - 100-200 строк кода, хотя в некоторых случаях он может доходить до 300. В обычной жизни 300 строк не так уж много, но здесь у тебя есть всего пять часов на решение всех задач. Писать нужно быстро, а если в трех сотнях строк будет допущена ошибка - задача не пройдет, значит, все время на ее решение будет попросту потеряно. К тому же, чем длиннее код, тем труднее найти ошибку в распечатанной версии.

Другие турниры и тренировки



Денежные призы далеко не основная мотивация участников турниров. На фото: Иван Белоногов и Илья Збань - призеры VK Cup 2015 (источник - страница Ивана Белоногова). В 2017-м призером VK Cup стал третий участник чемпионской команды ИТМО Владимир Смыкалов.

Мы постоянно участвуем в индивидуальных турнирах - их проводится очень много. Например, соревнования на российском сайте Codeforces регулярно собирают по несколько тысяч человек, из которых россиян обычно около 20 %. Стандартный тур здесь состоит из пяти алгоритмических задач, которые нужно решить за два часа. Самое главное в сложившемся вокруг этого ресурса сообществе - личный рейтинг, рассчитанный по системе Эло, как в шахматах. Успешно выступая на турнирах, программисты получают очки - их определенное количество автоматически меняет цвет ника. Те, у кого ники красные, получают не только просьбы о помощи, но и предложения от работодателей. А главное, как любые спортсмены-чемпионы, пользуются всеобщим уважением - для многих участников «красный ник» сам по себе служит достаточным стимулом для борьбы.


Круче красных ников, только красные ники с первой черной буквой. 13 июля в двадцатке лучших на Codeforces было восемь россиян, по двое украинцев, поляков и китайцев и по одному представителю Швейцарии, Австралии, Кореи, США, Тайваня и Беларуси. При этом белорусский программист сейчас возглавляет рейтинг, хотя в принципе перестановки в таблице происходят постоянно.

Крупные соревнования проводят Mail.ru , Яндекс , Facebook , Google и другие компании. Например, в первом раунде текущего турнира Google Code Jam участвовало 20 тысяч человек. Тысяча лучших получили фирменные футболки, 25 - поедут на финал, который в этом году пройдет в Дублине.

Помимо Google Code Jam, Google проводил еще один турнир - Hash Code , финал которого в проходил в головном офисе компании. Участникам, в частности, выдавались планы зданий , которые нужно было максимально покрыть сетью Wi-Fi-точек, используя как можно меньше роутеров и проводов. Оптимального решения у такой задачи не существует, но решить ее лучше других, конечно, возможно.


Одним из зданий, в котором организаторы Google Hash Code предлагали расставить роутеры, была парижская Гранд-Опера.

Отдельный вид соревнований представляет AI Cup , где нужно написать программу искусственного интеллекта, способную играть против оригинальной программы, предоставленной организаторами в виде библиотеки. Игры создают специально для турниров, т. е. поиграть в них руками в принципе нельзя. Но сценарии подбирают так, чтобы писать для них стратегии было интересно.


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

Подобные соревнования постоянно проходят на французском сайте CodinGame . И приятно, что в турнирах AI мы добиваемся неплохих результатов, занимая места в первых двух двадцатках при полном отсутствии тренировок. Все-таки в спортивном программировании главный навык - сесть, подумать и написать код.


Школьная сборная США сезона 2017/18. Успеха в спортивном программировании в Америке в основном достигают молодые люди с азиатскими корнями.

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


В этом году в десятку лучших на международной Олимпиаде вошла всего одна команда из Западной Европы - студенты Королевского технологического института из Стокгольма.

Успехи России выглядят вполне объяснимыми, поскольку здесь - и очень сильная математическая школа, и сложившаяся тусовка олимпиадников, готовая помочь начинающим. В России, помимо ИТМО, очень сильные команды представляют СПбГУ (чемпионы прошлого года), МГУ, московский Физтех, вузы Екатеринбурга и Саратова, хотя время от времени хорошие составы удается собрать и другим университетам.


На фото еще одна команда ИТМО: Артем Васильев и Бориса Минаев и Геннадий Короткевич - чемпионы мира 2015 года. Кубки Международной олимпиады по программированию не переходящие - теперь в ИТМО хранится уже семь. Добавить метки

За последние 17 лет российские программисты 11 раз выигрывали мировое первенство по программированию АСМ ICPC, а в последние пять лет кубки уезжали в Россию ежегодно. Журнал РБК выяснил, как сложилась карьера нескольких финалистов одного из самых престижных мировых конкурсов программирования

Фото: Асхат Бардынов для РБК

Международный студенческий чемпионат по программированию Assoсiation for Computing Machinary International Collegiate Programming Contest (далее — ICPC) проводится с 1977 года. До финала, который каждый раз проходит в разных странах, доходит 100-120 команд, состоящих из трех человек. Организаторы турнира разыгрывают 12 комплектов медалей — по четыре золотые, серебряные и бронзовые награды.

За все время проведения ICPC чемпионами становились студенты в основном двух российских вузов — Санкт-Петербургского государственного университета (СПбГУ) и Санкт-Петербургского национального исследовательского университета информационных технологий, механики и оптики (ИТМО). В 2006 году победу одержала команда Саратовского государственного университета.

Соревнование студенческое, но даже через пять-десять лет участие в нем котируется при найме на работу, рассказал журналу РБК руководитель группы рекрутмента платформы Amazing Hiring Александр Пашинцев. Чаще всего медалистов и чемпионов таких олимпиад нанимают интернет-гиганты — «Яндекс», «ВКонтакте», Facebook, Google, Amazon, Mail.Ru Group, Avito или специализированные компании, занимающиеся, например, высокочастотным трейдингом, отмечает Пашинцев. По его данным, в крупных IT-компаниях 5-10% общего числа сотрудников — специалисты, прошедшие через турниры ICPC.

Молодежь, побеждающая на специализированных олимпиадах, может интересовать крупные западные компании, которые привыкли обучать сотрудников самостоятельно, считает старший консультант департамента «IT и телеком» кадрового агентства Cornerstone Ирина Лукавская. Уровень зарплат таких сотрудников зависит от современности технологии, в которой они разбираются, и числа профессионалов-конкурентов на рынке. Например, для тех, кто работает с программным обеспечением «1С» месячная заработная плата в 150 тыс. руб. — достойная, продолжает Лукавская, а АВАР-разработчики (знают внутренний язык программирования немецкой SAP) еще до кризиса 2008 года зарабатывали более 200 тыс. руб. в месяц.

Несколько участников ICPC отказались общаться из-за корпоративной политики компаний, в которых они сейчас работают. Журнал РБК поговорил с четырьмя чемпионами и медалистами ICPC и узнал, как сложилась их карьера и помогло ли им «олимпийское» прошлое.

Играющий тренер

Андрей Лопатин, двукратный чемпион мира по программированию (2000 и 2001 годы), считает, что ему удается совмещать карьеру в IT и педагогику. Его бывший наставник, старший преподаватель факультета информационных технологий и программирования СПбГУ Наталья Вояковская, ушла после 15 лет работы, и Лопатин после второй победы в ICPC занял место главного тренера вуза. «Я хотел, чтобы дело жило. Если бы я не подхватил, оно бы развалилось», — рассказывает чемпион-преподаватель.

Интерес к соревнованию в СПбГУ растет: еще десять лет назад число желающих заниматься спортивным программированием не превышало 100 человек в год. Теперь количество студентов, которые хотят испытать свои силы в чемпионате, достигает 200 человек ежегодно: к Лопатину приходят студенты с различных факультетов СПбГУ. В основном это студенты-математики — у каждого свои успехи, но в среднем обучение занимает около трех-пяти лет. Итоговый отбор на участие в конкурсе проходят примерно 50 человек, а в финал ICPC выходят лишь три человека.


Андрей Лопатин уверен, что программисты — это ценный ресурс, если они умеют не только писать код, но и знают, как должна работать программа

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

При хорошем уровне подготовки студенты начинают раз в месяц-полтора участвовать в выездных мероприятиях: в одном из университетов собираются команды из разных вузов, которые соревнуются между собой. Сильнейшая по составу участников и тренеров площадка в России находится в Петрозаводском государственном университете, говорит Лопатин.

Периодически сборы проходят и за рубежом, но они, как правило, «гораздо слабее, чем в России» — из-за среднего уровня подготовки участников, рассказывает один из главных тренеров страны. Россия в последние годы доминирует в ICPC. В числе тех, кто может полноценно соперничать с российскими программистами, Лопатин называет американских, но это происходит за счет «импортированных» студентов — поляков, китайцев и других, поскольку в ведущие вузы США приезжают учиться со всего мира.

«Говорят, у китайцев есть сборы, подобные нашим, но нас на них никогда не звали, поэтому доподлинно неизвестно», — усмехается Лопатин. Когда он сам был школьником и участвовал в олимпиадах по программированию, о китайских участниках ходило множество слухов: якобы их вывозят в горы на год и заставляют тренироваться. Так это или нет, но китайские команды составляют «достаточно сильную конкуренцию», становится серьезен Лопатин.

Программирование требует «больших математических знаний», продолжает он: если начинать знакомство с математикой с детства, то развивается определенный склад ума. На ICPC участнику нужно не просто написать код — необходимо решить сложную проблему и открыть что-то новое, и без математического мышления и знания алгоритмов никуда, категоричен тренер. С каждым годом задания на чемпионате усложняются — задачи, которые 15 лет назад казались нереальными, сейчас можно решить за 15 минут.

Многие IT-компании проводят собственные соревнования по программированию: это позволяет им искать будущих сотрудников. Однако ICPC — самый престижный конкурс: его участники — не просто кодеры, которые создают программы, а специалисты, придумывающие, как такая программа может быть устроена, объясняет Лопатин. Финалисты ICPC могут сэкономить работодателю бюджет: 10 тыс. серверов обойдется компании в $50 млн, а два толковых программиста могут рассказать, что необходимо сделать, чтобы не закупать эти серверы, объясняет тренер.

Подготовка команд СПбГУ к соревнованиям по программированию — основная работа Лопатина. В разные годы он работал во «ВКонтакте» и Telegram, созданных Павлом Дуровым, но сейчас параллельно с педагогикой занимается консультированием российского сервиса для построения логистических маршрутов VeeRoute. Лопатин признается, что с момента последнего своего личного чемпионства 15 лет назад он отказал примерно десяти крупным компаниям, которые звали его на работу.

Главный по котикам

Чемпионом мира ICPC Дмитрий Егоров стал в 20 лет — в 2014 году, когда учился на третьем курсе математико-механического факультета СПбГУ. Сейчас он возглавляет отдел разработки и оптимизации баз данных крупнейшей соцсети России «ВКонтакте» и продолжает учиться в магистратуре НИУ Высшей школы экономики. Впрочем, совмещение университета с работой — привычное для Егорова дело.

Будущий чемпион мира окончил физико-математический лицей № 239 в Санкт-Петербурге — престижную школу, в которой учились, к примеру, математик Григорий Перельман, доказавший гипотезу Пуанкаре, и родной брат основателя «ВКонтакте» Павла Дурова Николай, вместе с ним работавший над созданием и развитием соцсети.


Дмитрий Егоров год назад возглавил отдел «ВКонтакте». Под его руководством — четыре чемпиона мира по программированию. (Фото: Асхат Бардынов для РБК)

В 2014 году финал чемпионата ICPC проходил в первых числах июля в Екатеринбурге. Команда СПбГУ, в которой выступал Егоров, заняла первое место — это была третья подряд победа России на мировом турнире.

В первые годы учебы в университете Егоров стажировался в «Яндексе» — с 2012 по 2014 год. В компании прием «практикантов» поставлен на поток, поэтому при желании и «некотором уровне базовой подготовки» попасть туда совсем несложно, рассказывает студент. Стажировку в «Яндексе» он называет «крайне полезной» — не только с точки зрения полученных навыков программирования, но и с точки зрения организации внутри большой компании. После стажировки Егоров понял, что не видит себя рядовым сотрудником большой корпорации. «Я всегда был готов работать заметно больше и лучше других, но и ожидаю большей отдачи», — объясняет бывший студент СПбГУ. В больших компаниях недостаточно возможностей для роста и развития, им не хватает индивидуального подхода, сетует Егоров. И это касается не только «Яндекса», но и других IT-гигантов вроде Google. «Если хочется спокойной жизни с хорошей зарплатой и уверенностью в завтрашнем дне, то крупные IT-компании — отличный вариант. Но это не для меня», — считает чемпион ICPC.

Сразу же после церемонии награждения к Егорову подошел один из сотрудников «ВКонтакте» и предложил присоединиться к команде. Через несколько месяцев студент пришел на работу в крупнейшую соцсеть. Перспективы для него очевидны: весной 2014 года из «ВКонтакте» ушел Павел Дуров, вслед за ним компанию покинули многие разработчики. «Несмотря на десятки миллионов пользователей в день, вокруг вновь витал дух стартапа», — улыбается чемпион. Меньше чем через год Егоров возглавил отдел, в который пришел на рядовую позицию. В его отделе — семь человек: все они в разные годы участвовали в ICPC, четверо становились чемпионами мира.

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

Степень важности своего отдела для компании студент магистратуры оценивать не готов: во «ВКонтакте» сложно выделить ключевые и второстепенные отделы разработки. Для полноценной работы и развития необходимы все составляющие — и базы данных, и бэк-энд, и фронт-энд, и группа системных администраторов, и мобильная разработка. Без любой из этих частей сайт начнет деградировать довольно быстро, уверен Егоров. «Вы же не спрашиваете, какой орган у человека важнее — мозг или сердце? Без любого из них человек может жить разве что в анекдотах», — говорит он.

Все победители чемпионатов ICPC, как правило, могут выбирать место работы из довольно большого списка. Например, генеральный спонсор чемпионата мира компания IBM во время награждения раздает всем призерам приглашение связаться с их HR-службой и обсудить вакансии, вспоминает Егоров. Для себя он сразу решил, что не хочет уезжать из России.

«Для многих айтишников переезд за границу — нечто вроде навязчивой идеи, которую они культивируют друг в друге», — говорит Егоров. О выборе «ВКонтакте» в качестве работодателя он не жалеет, а массовую миграцию IT-специалистов за рубеж называет «абсолютной катастрофой для страны».

Поле возможностей

Студент 1-го курса механико-математического факультета СПбГУ Глеб Леонов и двое друзей увидели на стенде университета объявление о наборе желающих заняться олимпиадным программированием. Выпускник математической школы — Академической гимназии СПбГУ, в которой учился Павел Дуров, — заинтересовался. Так он попал в «класс» Андрея Лопатина. Дважды Леонов становился финалистом ICPC, один раз завоевал серебряную медаль.

Во время учебы в СПбГУ Леонов не подрабатывал: в этом не было особой необходимости, а учеба и тренировки по программированию занимали много времени, вспоминает он. После университета Леонов поступил в аспирантуру, но через год ушел: захотел сконцентрироваться на программировании.


Глеб Леонов с детства любил решать математические задачи, а уже в университете увлекся олимпиадным программированием (Фото: Асхат Бардынов для РБК)

Сейчас финалисты ICPC получают массу предложений от потенциальных работодателей: десять лет назад их возможности были скромнее. Впрочем, уже тогда Google звал программистов на собеседования. Леонова перспектива работы в одной из крупнейших американских IT-корпораций никогда не прельщала.

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

Участие в чемпионатах и работа в компаниях — не одно и то же. Если речь идет о спортивном программировании, то твоя цель — как можно быстрее решить задачу и написать программу. А во время работы в компании цель специалиста — разработать софт, который можно модифицировать. Иногда необходимо «порезать» программу на части и заменить одну из «деталей», не трогая остальные, поэтому главное в работе программиста — практический навык. В университете его приобрести сложно, говорит Леонов. Более того, чем выше должность, тем больше дополнительных навыков необходимо.

Уже семь лет Леонов работает в компании JetBrains в Санкт-Петербурге. Созданная в 1999 году в Праге российскими программистами Сергеем Дмитриевым, Евгением Беляевым и Валентином Кипятковым JetBrains разрабатывает софт для IT-специалистов. Сейчас помимо Праги и Санкт-Петербурга у компании работают офисы в Москве, Мюнхене, Бостоне и Новосибирске. На работу в JetBrains Леонов устраивался сам — попросил контакты у сотрудников компании и отправил резюме.

«Если студент дошел до финала чемпионата мира, то у него, скорее всего, есть способности и он достаточно легко пройдет собеседование на должность младшего программиста», — улыбается Леонов.

Сейчас финалист ICPC занимается разработкой инструментов, правда не для программистов. Для кого — Леонов отвечать отказался, сославшись на внутренние правила компании. Несколько раз в год он участвует в индивидуальных соревнованиях по программированию, которые проводят Google, Facebook, Mail.Ru Group и др. Отборочные этапы проходят через интернет, а финалистов зовут на итоговый этап в разные города мира. «В финалы я, конечно, не попадаю, поскольку занимаюсь больше для себя», — признается Леонов.

Ядро Google

Увлечение математикой Петр Митричев перенял у старшего брата, который также занимался программированием. Мама, химик по образованию, покупала Петру книги по математике. Когда в доме не было компьютера, Митричев-младший читал литературу о программировании и ходил с братом в Центр детского и юношеского творчества, где они занимались в компьютерном кружке. В семь лет он поступил в районную школу № 827, а в 14 лет перешел в специализированный класс школы № 57 в Москве, а затем подал документы на мехмат МГУ.

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


Петр Митричев еженедельно участвует в соревнованиях для программистов онлайн. После победы на ICPC это стало его хобби. (Фото: Асхат Бардынов для РБК)

В отличие от студентов СПбГУ и ИТМО у Митричева и его одногруппников с мехмата не было одного тренера. В качестве неформальных наставников выступали бывшие участники ICPC, которые делились своим опытом как онлайн, так и на сборах. Ведущий научный сотрудник лаборатории вычислительных методов мехмата МГУ Евгений Панкратьев помогал участвовать в соревнованиях: организовывал поездки и содействовал в оформлении документов. Митричев дважды дошел до финала ICPC — в 2003 году в США и в 2005-м в Китае, когда учился на первом и на третьем курсах соответственно. Оба раза в составе команд он занял второе место.

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

Финалисты ICPC могут заниматься организацией похожих соревнований внутри крупных корпораций или аналитикой (например, торговля на бирже). Последний вариант Митричев рассматривал для себя после окончания университета. «Там можно за более короткий срок заработать себе на старость», — признает он.

Однако с 2007 года Митричев работает в Google — сначала в московском офисе, с 2015 года — в швейцарском. На собеседовании в одну из крупнейших IT-компаний мира Митричеву пришлось решать задачи, которые похожи на те, что встречаются в финалах ICPC, вспоминает программист. Правда, сейчас он занимается поисковым ядром сайта Google, и эта работа больше связана с теорией вероятностей, которую Митричев изучал в университете. Скорость, приобретенная в ходе соревнований, помогает, когда нужно, к примеру, создать прототип программы и понять, работает ли она.

Сейчас Митричев помогает Google проводить собственные соревнования по программированию — Google Code Jam, придумывает задачи для турниров вместе с коллегами. Митричев сам дважды принимал участие в этом конкурсе и занимал третье место в 2005 году и первое в 2006-м. Программист признается, что обсуждал возможное сотрудничество с представителями «ВКонтакте», Facebook и «Яндекс», но сейчас ему кажется, что Google — лучший вариант, «потому что компания решает интересные задачи, а ее сотрудники — умные люди, с которыми приятно работать».

После ICPC Митричев еженедельно участвует в онлайн-соревнованиях. По его словам, для решения некоторых задач ему приходится переучиваться: «Новому поколению в этом плане проще: они сразу учат современные методы программирования». Сейчас Митричев возглавляет один из ведущих рейтингов американской корпорации Topcoder.com, которая проводит соревнования по спортивному программированию с 2001 года.

ВАШИНГТОН, 25 мая — РИА Новости. Команда Санкт-Петербургского национального исследовательского университета информационных технологий, механики и оптики (ИТМО) одержала победу в чемпионате мира по спортивному программированию ACM ICPC (International Collegiate Programming Contest), сообщили организаторы по итогам прошедшего в среду в городе Рапид-Сити (Южная Дакота, США) финала.

За победу боролись Иван Белоногов, Владимир Смыкалов и Илья Збань. Ребятам удалось решить 10 из 12 задач быстрее и грамотнее соперников. Готовил команду тренер Андрей Станкевич. В прошлом году он получил престижную награду ACM ICPC Senior Coach Award, которую вручают тренерам, чьи подопечные 15 и более лет выходят в финал конкурса.

© Ruptly

Путин в шутку предложил поддержать слухи о планах России создать телепорт Путину пожаловались, что СМИ выдернули из контекста информацию о развитии квантовой телепортации, в результате чего слово "квантовая" выпало, а новость о телепортации широко разлетелась в сети.

Как рассказала РИА Новости представитель ИТМО Лидия Перовская, "с каждым годом задачи чемпионата становятся сложнее, происходит непрерывная гонка знаний и задается очень высокая планка". Она призналась, что "хотя победа (команды) была вероятной, она все равно стала неожиданной" и "совершенно невероятной".

Второе место заняла команда Варшавского университета, третьими стали ребята из Сеульского национального университета, четвертое место завоевали чемпионы прошлого года — команда Санкт-Петербургского университета (СПбГУ). Команды еще двух российских вузов — МФТИ и Уральского федерального университета — вышли в финал и также стали призерами чемпионата.

В ежегодном чемпионате принимали участие более 130 команд со всего мира, 13 из них — российские. Последние годы Кубок мира передают друг другу две российские команды — СПбГУ и Университет ИТМО. На счету последнего семь чемпионских титулов — это абсолютный рекорд ACM ICPC. На втором месте находится СПбГУ с четырьмя кубками, а у ближайших зарубежных соперников — американского Стэнфорда и китайского университета Джао Тонг — по три победы.

Чемпионат ACM ICPC под эгидой компании IBM проводится ежегодно с 1977 года, за это время его золотая медаль и кубок победителя стали одним из "самых уважаемых компьютерных наград в мире". На счету российских вузов 12 чемпионских званий.

В ACM ICPC участвуют команды по три человека, в их распоряжении всего один компьютер. Финальный поединок длится пять часов. Побеждает команда, которая правильно решит наибольшее количество задач за наименьшее время. Каждое задание включает описание некой выдуманной ситуации (легенду), примеры тестов и формальные ограничения. Чтобы решить задачу, участникам нужно "перевести" условия на язык математики, затем разработать алгоритм решения и написать код.

Размер премии для победителей ACM ICPC 2017 составил 15 тысяч долларов США.

Следующий финал чемпионата мира пройдет в 2018 году в Пекине (КНР).

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

И кто наши герои?

Команда победителей состояла из трёх студентов кафедры компьютерных технологий , Владимира Смыкалова, Ивана Белоногова и Ильи Збаня. Главным тренером команды выступил доцент кафедры компьютерных технологий, кандидат технических наук Андрей Станкевич , который в прошлом году получил награду ACM ICPC Senior Coach Award за то, что в течение 15 лет его подопечные проходили в финал конкурса.

В число золотых призёров ACM-ICPC 2017 вошли СПбГУ (прошлогодний победитель), Варшавский и Сеульский университеты. Серебряные медали ACM-ICPC 2017 получили команды Фуданьского университета, Пекинского университета, Университета Синьхуа и МФТИ. «Бронзу» взяли представители Токийского университета, шведского Королевского технологического института, Уральского федерального университета и Корейского института передовых технологий.

Всего в этом году в финале ACM-ICPC 2017 участвовали 133 команды из всех регионов мира. Само состязание проходило уже в 41 раз.



Понравилась статья? Поделитесь с друзьями!