Книжная полка
Версия для печати

О чём думали тренеры в горячей ванне

Алексей Самсонов

Статья опубликована в буклете УРКОП 2011 (октябрь 2011)

Предисловие

Ноябрь 2010 года, в Санкт-Петербурге холодно и дождливо. В Аничковом дворце проходит полуфинал чемпионата мира по программированию ACM ICPC. Команда УрГУ Lynx (Денис Дублённых, Евгений Курпилянский, Михаил Рубинчик), изрядно поиграв на нервах тренеров, сдаёт в последние пятнадцать минут соревнования две задачи и занимает итоговое десятое место. Это значит, что УрГУ седьмой раз подряд пробивается в финал чемпионата (что удавалось только Москве и Питеру). Впереди у ребят месяцы тренировок перед главным соревнованием — изучение ещё более изощрённых алгоритмов, новых структур данных, отработка командной тактики. Чемпионат должен был пройти в конце февраля в Египте, однако революция внесла свои коррективы, и из Египта, где жарко, душно и растут пальмы, финал перенесли в Орландо (штат Флорида), где жарко, душно и растут пальмы.

Вечером 25 мая в Кольцово собралась делегация УрГУ, уже прекратившего своё существование. Помимо самой команды покорять Америку отправился декан мат-меха Магаз Оразкимович Асанов, а также «тренерский штаб»: Алексей Самсонов, Александр Ипатов и Игорь Чевдарь. Все трое участвовали в финалах в прошлые годы и норовили поделиться с «молодёжью» опытом. Алексей и Александр составили десятки задач для соревнований, проводимых в УрГУ и на сайте Timus Online Judge, Игорь же успел поучить Женю Курпилянского программировать, пока тот ещё учился в СУНЦ.

Золотое правило — «перед соревнованием говори о чём угодно, но только не о соревновании» — выполнять было трудно. Конечно, Денис и Женя достигли в спортивном программировании значительных высот, а в 2010 году в Китае заняли тринадцатое место и получили бронзу. Но их бывший однокомандник, Иван Бурмистров, завершил свою карьеру в ACM ICPC, сосредоточившись на карьере разработчика, да и на прошлогоднем финале было не просто везение, а, по словам Магаза Оразкимовича, «пруха». На тренировках ребята выступали пристойно, но не блестяще.

Прибытие. Три дня до соревнования

Всего три перелёта, и делегация УрГУ идёт поздно ночью по горячему асфальту Орландо в поисках такси. После двадцатиминутной поездки до отеля стало ясно, что на финале болеть будут все в прямом и переносном смысле — температура в машинах и помещениях градусов на двадцать ниже уличной, а кондиционеры дуют сильно и не отключаются персоналом принципиально.

Весь день 27 мая гигантский пятизвёздочный отель в курортном городке наполнялся сотнями программистов со всего мира — всего в отборочных стадиях участвовало около десяти тысяч команд, и только сто пять лучших попали на финал. Команда УрГУ успела не только отоспаться, но и преодолеть пешком огромное расстояние — обойти первый этаж отеля, воочию оценив гигантоманию американского юга. Центр Орландо оказался совсем небольшим районом, с невысокими небоскрёбами, узкими чистыми улочками, пальмами и чёрными лебедями, гуляющими прямо по газонам. Город в тихий час между окончанием рабочего дня и открытием ночных клубов казался совершенно вымершим. Отчаявшись сфотографироваться на фоне небоскрёбов, мы отправились обратно в отель на регистрацию, получать свою «спортивную форму» — зелёные футболки с надписью «Ural SU».

Открытие. Два дня до соревнования

Рано утром организаторы из IBM отвезли всех в парк развлечений Sea World и поздравили со столетием IBM. Дальше, на правах рекламы, последовал рассказ об истории и научных прорывах IBM, плавно перешедший в шоу касаток. До обеда команда нарушила ещё одно золотое правило — «не набираться ярких впечатлений до соревнования» — и убедилась, что «русские горки» в Америке — это намного страшнее и восхитительнее «американских горок» здесь.

Вечером в огромном зале прошло, как всегда, скучнейшее открытие соревнований. Тех, кто дождался конца открытия, ждал приз — можно было сфотографироваться с кубком чемпионов мира. Мы решили, что это плохая примета, и предпочли кубку директора чемпионата и флаг России.

Ребята перешли на американское время, неплохо отдохнули и рвались в бой. Однако на следующий день их ждала только репетиция финала — целых два «пробных тура».

Пробный тур. Один день до соревнования

Соревнование (контест) длится пять часов. Команде из трёх человек выдаётся один компьютер и комплект из десяти-двенадцати задач. Выигрывает тот, кто решил больше всех задач, причём сделал это как можно быстрее. «Решить» задачу — значит «написать программу, которая работает верно на всех входных данных жюри. Тестирование производится автоматически прямо во время соревнования — если команда отправит неверное решение, ей об этом сообщат, и у неё будет время исправить ошибку и попытаться сдать исправленную версию.

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

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

Финал чемпионата мира

Старт — и триста человек углубились в чтение условий задач. Прошло одиннадцать минут, и команда СПбГУ сдала первую задачу, а уже через час у лидеров соревнований было три решённых задачи. К нам подходили тренеры других русских команд и спрашивали: «Что случилось с вашими ребятами? Что не так? Почему у них до сих пор нет ни одной решённой задачи?» Мы же говорили, что так и надо, у команды Lynx явно есть хитрый план, они пишут решения всех задач одновременно и вот-вот нас порадуют. Главное, что мы сами в это верили, и, как оказалось, не зря. За второй час соревнований Lynx сдают четыре задачи подряд и стремительно взлетают на седьмое место в таблице — никогда команды УрГУ не поднимались так высоко. Вот тогда мы занервничали — хватит ли ребят надолго. На третьем часу они сдали пятую задачу (у всех лидеров было по пять-шесть задач). Ну а потом — пауза. Мы можем видеть только таблицу результатов, а из неё видно, что наши ребята не шлют новые решения уже десять минут, двадцать минут, полчаса, час… Стало понятно, что нашей команде для попадания в двенадцать лучших (и получения медалей) нужно сдать не меньше семи задач.

Тренерский штаб не выдержал напряжения и за полтора часа до конца контеста ушёл в бассейн. Повлиять на команду было уже нельзя. Мы целый час сидели в горячей ванне и мечтали, как, вернувшись в зал проведения соревнований, увидим на табло, что команда Lynx вновь начала сдавать задачи. Скрестив пальцы, мы вернулись за полчаса до конца и увидели, что Lynx даже не сделали ни одной попытки, а в бинокль разглядели, что ребята отчаянно машут руками, кругами ходят вокруг компьютера, вчитываясь в распечатки (видимо, неправильных) решений. Провал? Таблица результатов была «заморожена» — зрители могли видеть только факт посылки решения командой, но не результат этой посылки («принята ли задача»). И вот, на последних минутах команду прорвало — они начали слать решения одно за другим сразу по двум задачам. Тренеры понимали, что это значит — «посылки отчаяния», когда команда старается под занавес контеста внести случайные изменения и «продавить» неправильное решение. И вот — гонг, контест завершён. Ещё десять минут нас не пускают в зал проведения контеста. Потом мы бежим к ребятам и они говорят — «Семь!». Да, они в последние минуты хладнокровно отладили и сдали сразу две задачи. Сразу же идёт подведение итогов, и УрГУ Lynx взлетают наверх, оказавшись на итоговом одиннадцатом месте и получив бронзовые медали чемпионата мира по программированию ACM ICPC.

В тот же день мы постарались осознать, что произошло — да, это лучшее место команд УрГУ за все годы выступления на финале. Команда Lynx сыграла в своём стиле, медленно сдавая задачи, но успев добить под занавес контеста сразу две задачи. У чемпионов мира восемь задач — всего лишь на одну больше, а уже у третьего места — те же семь. Позади остались такие зубры, как СПбГУ ИТМО — чемпионы России, уверенно разгромившие всех на полуфинале, или команда Варшавы, показывавшая на тренировочных контестах феноменальные результаты, выше чем у всех российских команд. Чемпионом мира стали китайцы из университета Чжэцзян, на втором месте — команда университета в Мичигане, за которую также выступал китаец-легионер. Команда СПбГУ взяла золото, Нижнего Новгорода и Саратова — серебро, МГУ — бронзу.

Торжественная часть была организована сказочно — заключительный ужин прошёл в зале, стилизованном под обеденный зал Хогвартса, а ночью всех участников отвезли в открытый специально для участников ACM ICPC парк развлечений Universal с ещё более сумасшедшими «русскими горками» и другими аттракционами.

Отъезд. Один год до соревнования

Мы остались в Орландо ещё на день и успели съездить на Атлантический океан. Под шум волн говорили о том, чего мы всё-таки достигли, и что будет дальше, после такого рекорда. УрГУ уже не существует, а «смена поколений» пугает ещё сильнее — Денис и Женя заканчивают свою карьеру в соревнованиях ACM ICPC, а молодёжи до их уровня как до Луны. Но у них есть желание. У Миши есть команда на следующий год. В УрГУ будут проводиться соревнования, будут и тренировки. А значит, можно ставить цели. Через год финал будет в Варшаве. Может, поболеем?

Алексей Самсонов
тренер команды УрГУ, получившей бронзу
на чемпионате мира по программированию