Об авторе: Анатолий Шалыто, профессор, д.т.н., Университет ИТМО
В честь 15-летия платформы для проведения соревнований по программированию Codeforces (статью про 10-летие см. здесь) её основатель Михаил Мирзаянов решил провести блиц-турнир по спортивному программированию Codeforces Blitz Cup 2025. Эту идею он разрабатывал с известным организатором соревнований по программированию, выпускницей нашей кафедры «Компьютерные технологии» Университета ИТМО Лидией Перовской. Кстати, Мирзаянов (призёр чемпионатов мира по спортивному программированию) учился не у нас, а в Саратовском государственном университете, но последние несколько лет работает в ИТМО на нашей кафедре.
Организаторы блица пригласили к участию всех тех спортивных программистов, кто когда-либо на этой платформе имел рейтинг не менее 2400 баллов. Таких в мире достаточно много (не менее семисот). Из них захотели участвовать 64 человека. Среди заявившихся оказалось по крайней мере три наших выпускника – чемпионы мира по спортивному программированию, легендарный Геннадий Короткевич (ник – turist) и Илья Збань (izban), а также призёр чемпионата мира Николай Будин (budalnik).
Все участники были разбиты на пары, в которых они соревновались. По условиям соревнований каждой паре для решения предлагалось семь задач на 40 минут. Каждой задаче присвоено определённое число баллов в зависимости от её сложности: 2, 3, 4, 6, 8, 10, 12. В сумме (максимально возможный результат) – 45. Как только один из участников решал задачу, что определялось с помощью тестов автоматически, соревнующиеся переходили к решению следующей задачи. Если кто-то решал все задачи, то «бой» пары завершался сразу.
Для того, чтобы все участники были в равных условиях, организаторы создали программу, которая для каждой пары выбирала из достаточно большого архива задач платформы только те из них, которые каждый из участников на ней никогда не решал!
Предварительный тур, который не транслировался в Интернете, проходил в течение двух недель (участники могли быть заняты, болеть или находиться в разных часовых поясах, так что время соревнований планировать было трудно) и состоял из двух раундов, на первом из которых отбиралось 32 участника, а на втором – 16. Короткевич в первом раунде победил со счетом 43:0, Збань – 6:1, а Будин – 15:6. Во втором раунде Геннадий победил 39:6, Илья – 23:10, а Николай проиграл 16:17 и выбыл.
Восьмого марта прошла 1/16 финала, по результатам которой из 16 участников было отобрано восемь. «Бои» транслировались в Сеть и комментировались. На этом этапе у Геннадия и Ильи результаты оказались зеркальными: Короткевич победил 31:2, а Збань проиграл – 2:31 и выбыл. В тот же день прошли два четвертьфинала, в одном из которых Гена выиграл 45:0.
Девятого марта прошли два оставшихся четвертьфинала, полуфиналы и финал. Естественно, что и они транслировались в Сеть. Если во всех предыдущих матчах Короткевич безоговорочно побеждал, то в полуфинале он сражался с россиянином Александром Головановым, победа над которым была не столь убедительна – 27:18.
Зато в финале Геннадий вновь триумфально победил со счетом 45:0. На этот раз очень сильного американца Jay Leeds, рейтинг которого – 3569. Кстати, Гена сегодня имеет самый большой рейтинг – 3857 – на Codeforces, а его максимальный рейтинг на этой платформе небывалый и равен 4009. Так что, назвав Гену в начале этого текста «легендарным», я сказал правду, тем более, что эти достижения лишь небольшая часть его невероятных успехов в спортивном программировании.
Указывать на странице участника Codeforces два рейтинга (текущий и максимальный) в своё время Мирзаянову предложил я, так как в то время приводился только текущий рейтинг, со значением которого связывалось звание, присваиваемое на платформе участнику (например, звание «легендарный гроссмейстер»). В результате звания участников в зависимости от их результатов изменялись. Я обратил внимание Михаила на то, что в шахматах это не так: если человек стал гроссмейстером, то его звание от его коэффициента Эло в этот момент не изменяется. На один из моих дней рождения Миша сделал мне подарок – стал указывать на странице участника два рейтинга и звание, соответствующее его максимальному рейтингу за время участиях в соревнованиях на платформе.
Соревнования по блицу иногда проводит и федерация спортивного программирования России. Однако эта молодая организация не всегда озабочена тем, чтобы задачи не были ранее «засвечены». Это связано с тем, что создание новых задач дорогое и непростое удовольствие. Однако делать это необходимо, поскольку соревнования на задачах, которые кому-то из участников могут быть известны, ставят их в неравные условия и могут быть лишь тренировочными.
Поэтому такой профессионал в области спортивного программирования, как Мирзаянов, не уверен, сможет ли он на своей платформе провести ещё раз большие соревнования по блицу – такие же, как и в этот раз, чтобы каждый участник в каждом туре решал задачи, которые он ещё никогда не решал на Codeforces. Интересно, что в шахматах такой проблемы нет, так как там задачи для решения дает не судья, а противник.
Но выход из этой ситуации, возможно, появится. Уже сегодня с помощью больших языковых моделей искусственный интеллект (ИИ) может решать задачи на Codeforces на уровне сильных программистов. Поэтому корректные соревнования по блицу, как предположил ещё один наш выпускник, тоже чемпион мира по спортивному программированию, Павел Маврин, смогут проводиться тогда, когда ИИ научится «придумывать» всё новые и новые задачи и тесты к ним! Думаю, что это время не за горами.
И в заключение ещё об одном нашем выпускнике, Борисе Минаеве, он, кстати, тоже чемпион мира по спортивному программированию и соавтор статьи «Competitive Programming with Large Reasoning Models» («Конкурентоспособное программирование с использованием больших моделей рассуждений»), в которой описано то, о чём говорится в предыдущем абзаце – как ИИ уже сегодня классно решает по программированию!