Запрограммированы на победу: как готовят чемпионов по айти
Команда Московского физико-технического института (МФТИ) уже больше 10 лет безоговорочный фаворит на олимпиаде International Collegiate Programming Contest (ICPC). Очередное золото взято в этом году. «СР» узнала, как готовят чемпионов, почему финалисты так быстро уходят на «пенсию» и при чем здесь елки-палки.
В первый раз команда института отобралась в финал в 2008 году, а с 2011-го без студентов МФТИ не проходит ни один заключительный этап. Ему предшествует тщательный отбор. На первый тур от каждого вуза регистрируется неограниченное количество команд. «От нашего института на отборочном этапе обычно выступает более 70 команд, в четвертьфинале — в среднем 15»,— рассказывает тренер Демид Кучеренко, заместитель директора Физтех-школы прикладной математики и информатики МФТИ. В полуфинал от каждого вуза можно пройти шести командам, в финал — одной.
Для студентов Физтех-школы прикладной математики и информатики Дениса Мустафина, Всеволода Нагибина и Тихона Евтеева это второй финал: в первый раз они заняли третье место, теперь — второе (первые четыре команды получают золото). В этом году они обогнали сильнейших соперников из Массачусетского технологического института, Университета Цинхуа, Сеульского университета — и попрощались с ICPC. По правилам один студент имеет право выступить в финале лишь дважды. «При подготовке мы учитываем сменяемость, поэтому тренируем не только сборную, но и замену,— поясняет Демид Кучеренко.— Наши чемпионы уходят на «пенсию», но я уверен, что кто-то из молодых физтехов пройдет в финал в следующем году».
Каждая тренировка — это моделирование реального соревнования, полноценная пятичасовая олимпиада. После — разбор полетов. На пике подготовки расходятся поздним вечером либо ночью.
В финале ICPC пишут программы для 12-13 задач на скорость, в распоряжении у команды только один компьютер. На тренировках распределяются обязанности. «В нашей «золотой» команде код для программы пишут Сева и Денис. А Тихон придумывает решение, объясняет его напарникам и быстро проверяет код»,— говорит Демид Кучеренко.
Решающую роль на ICPC играет компьютерное время — оно ограничено. Поэтому команды прибегают к хитрости: печатают код на бумаге. Так искать ошибки труднее, чем на компьютере, но это экономит такие важные минуты.
Как на любом соревновании, у участников нет права использовать «допинг»: в финале доступ к интернету полностью заблокирован. «Даже если кто-то захочет сжульничать и пронесет телефон, это не поможет,— замечает Демид Кучеренко.— Почти невозможно найти людей, решающих задачи такого уровня, вне аудитории, где проходит финал. Нейросеть тут тоже бессильна — задания слишком сложные». Единственное подспорье — словарь, им разрешается пользоваться, так как задачи в тестирующей системе на английском языке.
Тренер сборной МФТИ рассказал, как организаторы придумывают задачи: «Закладывают математическую модель, которая потом обрастает легендой. Один из популярных типов задач — логистические. Например, есть несколько пунктов выдачи заказов, и водитель должен на машине определенной вместимости развезти товар так, чтобы сэкономить время и бензин. Нужно написать программу, которая при вводе условий будет строить оптимальный маршрут».
Те, кто выигрывает в финале чемпионата мира по программированию, очень востребованы во всех компаниях, говорит Демид Кучеренко и уточняет: «Но это не значит, что они с первого же дня будут крутыми разработчиками. За ними охотятся скорее как за людьми, которые нестандартно мыслят и решают очень сложные задачи. А этот навык нужен везде. Главное, что отличает наших ребят,— они быстро научатся приносить реальную пользу в реальных условиях».
СПРАВКА
ICPC зародилась в Техасском университете в 1970 году. Нынешний облик олимпиада приняла в 1977 году, когда первый финал прошел в рамках ежегодной конференции Ассоциации вычислительной техники по информатике. ICPC отличается жесткостью правил. Время работы с компьютером регламентировано. Код, написанный командой, жюри проверяет на множестве различных входных тестов, не известных участникам заранее. Задача считается решенной, если программа выдала правильные ответы при вводе всех тестовых данных. В отличие от других олимпиад международного уровня, частичные решения в итоговом протоколе ICPC не учитываются.
Тихон Евтеев
Студент 4‑го курса Физтех-школы прикладной математики и информатики
— Название команды Yolki-Palki мы придумали в последний момент по принципу «прикольно и не занудно». Конечно, иностранцы спрашивали, что это значит, приходилось объяснять. Повезло, что название почти нигде не фигурировало: все знали нас как команду Физтеха.
В этом году подготовка была не на износ, занимались, чтобы поддерживать форму. Да, в старших классах и на первых курсах я мог тренироваться в программировании по 20 часов в сутки. Сейчас в таких марафонах смысла нет: мы все равно не узнаем ничего нового и, если решим все на таком же уровне, как обычно на тренировках, победим.
Заключительный этап проходил в Астане, и там мне понравилось больше, чем в Луксоре в 2023 году: еда вкуснее, город красивее, волонтеры прикольнее.
В программирование меня втянуло осознание того, что я могу написать программу, которая будет работать за меня. Но я бы давно бросил, если бы не новые интересные задачи и заряженные напарники. Мы написали последний финал — основная причина существования команды исчезла. Но, мне кажется, все мы писали не только ради поездки на заключительный тур. Каждому из нас нравится решать задачи, это и будет стимулировать нас продолжать. Хорошо, что олимпиад нашего уровня хватает, и я уверен, что мы еще не раз покажем класс.