– Спортивное программирование – это как? Сначала шахматисты пишут программы, потом прыгуны в высоту, а потом боксеры? – подначивал меня муж-программист, провожая в Берлин на финал международного чемпионата по спортивному программированию «Яндекс.Алгоритм-2014».

– Смейся-смейся, ты у меня еще визитки этих «боксеров» просить будешь. Зуб даю! – огрызнулась я.

И накаркала. Зуб пришлось оставить в Берлине – терпеть адскую боль не было больше сил. А вот потрясающие впечатления – все до единого – я привезла с собой в Харьков.


Отель Radisson Blu
в центре Берлина,
в котором нас поселили, знаменит крупнейшим в мире цилиндрическим аквариумом высотой
с десятиэтажный дом. Внутри аквариума – стеклянный лифт,
на котором можно подняться на смотровую площадку.

В аквариуме живут полторы тысячи тропических рыб


Именно в этом отеле на седьмом этаже IT-компания «Яндекс» арендовала помещение для нового офиса. Кстати, аренда, по словам директора по распространению технологий «Яндекса» Григория Бакунова, в Берлине дешевле, чем в Москве, Киеве или Минске. Берлинский офис открылся в феврале, и сейчас там работают не больше десяти программистов – занимаются разработкой голосовых команд и карт. К концу года наберут еще пару десятков разработчиков, говорит Григорий Бакунов. Сейчас проходят собеседования.

В только что отремонтированных помещениях практически пусто – только администратор на resepshn да пара-тройка программистов.

В берлинском офисе «Яндекса» пока не так много сотрудников

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

– Обратите внимание на стулья! – призывает журналистскую братию Григорий. – По непонятной мне причине журналисты не обращают внимания на стулья. А ведь для разработчика – это одна из самых ценных вещей. Эти стулья – одни из самых дорогих, какие только можно найти, но зато самые удобные.



Программисты в «Яндексе» сидят на правильных стульях

Накануне финала в офисе не заметно беспорядочного движения, не слышно истошных криков: «Вася, куда ты желтый провод дел?». Атмосфера – спокойная и, на первый взгляд, даже расслабленная. Все идет по заранее известному алгоритму, где у каждого свои задачи и свои методы ее выполнения.



Сотрудники «Яндекса» не расстаются с компьютером даже в комнате отдыха

– Спортивное программирование очень отличается от обычного, – просвещает журналистов менеджер академических программ «Яндекса» Михаил Левин. – За ограниченный промежуток времени – в нашем случае за 100 минут – людям нужно решить несколько задач, а именно шесть, каждую из которых обычный программист мог бы решать неделю, а то и месяц. А мог бы и вообще не справиться.

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

– Еще один признак того, что это настоящий спорт – несмотря на отсутствие ограничений, вы практически не увидите здесь людей за тридцать. Ребята, которые могли решать задачи молниеносно, с возрастом начинают работать немножечко медленнее – нейроны мозга не так быстро реагируют. И «ветеранам» становится сложно конкурировать с молодыми.



Обычный программист мог бы решать одну задачу в течение недели, а то и месяца

С интересом наблюдаю за участниками финала. Обычные ребята, почти мальчишки. Их не узнают на улицах, их лица не мелькают на экранах телевизоров, они не ходят по красным дорожкам и не раздают автографы. Напротив, чураются излишнего внимания прессы и прячутся по углам от объективов фото- и видеокамер. Тем не менее они звезды – звезды в своей компьютерной Вселенной: программисты с мировым именем, призеры международных чемпионатов по спортивному программированию, разработчики Google и Facebook (по правилам «Алгоритма» сотрудники «Яндекса» не имеют права участвовать в соревнованиях, которые организует их компания).



В Берлине собрались программисты с мировым именем (в красной футболке – харьковчанин Дмитрий Джулгаков)

«Яндекс» проводит индивидуальные чемпионаты с 2011-го – участников тогда было совсем не много. В этом году в отборочных турах, которые проходили с 1 по 15 июля, напрягали мозги уже почти четыре тысячи программистов из более чем 70 стран. В финал вышли 25 самых быстрых и креативных из девяти стран, однако не все доехали до Берлина. Досадно, но именно одному из харьковчан – выпускнику мехмата ХНУ им. В.Н. Каразина Евгению Соболеву – консульство Германии отказало в выдаче визы. Его брату-близнецу Дмитрию пришлось отдуваться за двоих. Впрочем, это так – для красного словца: соревнования индивидуальные, и каждый работал исключительно на собственный результат. Вообще в финал попали четверо украинцев, и трое из них – харьковчане: братья Соболевы и Дмитрий Джулгаков (сейчас живет в Сан-франциско, работает в Facebook).



Дмитрий Соболев (Харьков) за три секунды до старта

Итак, финал. Никаких тебе стартовых пистолетов, судейских свистков, упражнений для разогрева мышц перед стартом. На лицах участников – ни малейшего напряжения. Просто вскрывается конверт с заданиями – и время пошло. За 100 минут нужно решить шесть задач. Вот одна из них. По мнению авторов – самая простая из набора.

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

И, чтобы уж не оставалось белых пятен в этой космической истории, приведу и решение задачи. Очевидно, что размерность параллелепипеда не меньше количества различных длин ребер. В K-мерном параллелепипеде 2K-1 ребер одного типа, то есть в в случае наличия X одинаковых ребер, для них будет использовано [(X − 1)/2k−1] + 1 измерение. Поэтому в порядке возрастания перебираем все размерности, пока вычисленное по указанной выше формуле суммарное количество использованных измерений не будет меньше или равно текущей размерности. Так как при K = 21 ребер одного типа будет 220 > 106, то перебор будет небольшим.



В ожидании результатов

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

Серебряным призером стал студент Токийского университета Хосака Кадзухиро, который тоже решил четыре задачи, но набрал 90 минут штрафного времени. Трогательный японец, которого я поначалу приняла за девочку, ни на секунду не расставался с игрушечным зайцем – так вдвоем и вышли на вручение призов.



Это стол Хосаки Кадзухиро. Задачку об НЛО он, кстати, решил верно

Третье место завоевал китаец Ван Циньши из университета Цинхуа – он решил четыре задачи при 125 минутах штрафа.



Интернациональная тройка призеров – белорус Геннадий Короткевич, японец Хосака Кадзухиро, китаец Ван Циньши

За первое место «Яндекс» учредил денежный приз в 300 тысяч рублей (более 6 тыс. евро), за второе – 150 тыс. рублей (чуть более 3 тыс. евро), за третье – 90 тыс. рублей (около 2 тыс. евро). На что потратят свой выигрыш призеры, с ходу ответить они не смогли. Думаю, им доводилось решать задачки и посложнее – на это уж точно мозгов хватит.

Что касается финалистов-украинцев, то десятое место оседлал Антон Райчук из Хмельницкого (сейчас он живет в Цюрихе, работает в Google), на 12-м обосновался Дмитрий Джулгаков, Дмитрий Соболев стал 18-м. И если кому-то вдруг покажется, что результаты – так себе, уверяю вас: быть в числе 25 лучших программистов в мире – это очень круто. Зуб даю!



Соревнования завершены – компьютеры грустят