Финал прошлого чемпионата для студентов МГТУ – фото MDovzhenko

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

Зачёт индивидуальный, призы — 100 000 рублей за первое место, 70 тысяч — за второе, 50 тысяч — за третье. Плюс будет дополнительный игровой конкурс, победитель которого тоже получит приз. Для финалистов из РФ — бесплатная поездка в Москву, питание и проживание на два дня.

В прошлом году проводилось похожее мероприятие, тогда участвовало примерно 1500 человек (в квалификационном раунде), поэтому в этом году схема будет такая:
  • Квалификационный раунд – 13-14 апреля, удалённо (на следующий этап проходит не более 2000 участников).
  • Первый отборочный раунд – 15 апреля, удалённо (проходит 400 участников).
  • Второй отборочный раунд – 22 апреля, удалённо (проходит 50 участников).
  • Финал чемпионата состоится 16 и 17 мая в Москве в офисе компании КРОК.

Во всех раундах 5 задач, по мере приближения к финалу их сложность будет немного увеличиваться.

Регламент


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

Турнир будет проходить так:
  • Вы подаёте заявку на регистрацию.
  • Получаете регу на Codeforces. Если у вас уже есть аккаунт, то вы можете указать его при регистрации
  • В назначенное время с сайта приходит напоминание, вы заходите на сайт, читаете условия задач
  • Вы решаете их и делаете коммит кода на сервер Codeforces.

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

Если вы попадает в финал, то всё происходит интереснее:
  1. Вы приезжаете в Москву. Мы немного показываем вам город и устраиваем соревнование по программированию искусственного интеллекта. Оно всегда необычное. Например, на прошлом чемпионате были битвы роботов-волшебников: участники писали алгоритм для своего бота, а мы грузили его в мир с другими ботами и смотрели, кто круче. Здесь можно посмотреть видео. В этом году традиция сохранится, и мы приготовим ещё один сюрприз.



  2. На второй день соревнований, отдохнув после дороги, вы попадаете в специально оборудованный зал. Там есть WiFi, розетки и локальные машины с набором сред разработки, которые покрывают все языки, предусмотренные правилами. Обычно такими машинами пользуются далеко не все, потому что можно (и даже желательно) приезжать с любым своим железом — от отдельной клавиатуры до ноутбука.
  3. Вы заходите на сайт, используя свою регу, получаете задачи, решаете их.
  4. Решив свою задачу (после этого работать с ней уже нельзя), участник может смотреть исходные коды подтвержденных решений этой же задачи других участников. Можно предложить им тест, то есть, попытаться «взломать» их решения. За удачный взлом – бонус, за неудачный – штраф.

Перед началом турнира будет вступительное слово с напоминанием правил и объяснением технических подробностей. Потом несколько часов кода, потом обед, затем — оглашение результатов.

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

Задачи


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

Можно использовать любые свои наработки — шаблоны алгоритмов сортировки, заготовки кода и так далее. Флешки можно приносить. Доступ к интернету будет только до сервисов Codeforces, пользоваться своими подключениями будет нельзя.

На прошлом турнире был вопрос о том, можно ли использовать прекалки до получения входных данных, например, просчёт всех возможных решений при их ограниченной базе. Да, можно, равно как можно рассчитывать таблицы синусов и другие вещи, которые вам вдруг понадобятся – но задач, где это может реально помочь, не будет.

Советы


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

Все задачи имеют ограничение по памяти и времени выполнения. Конфигурация сервера — Intel E6720 2.67Ghz, RAM 3Gb, Windows 7, но готовить компиляторы под его архитектуру не надо — в коммите только код, компиляция будет происходить уже на самом сервере чемпионата. Ограничения по времени очень лояльные.

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

FAQ


— Сколько людей зарегистрировалось на момент публикации топика?
Около 1000 человек.

— Где точные правила?
Вот здесь.

— Задача прошла 19 наборов данных из 20: я получу за неё хоть одно очко?
Нет, не получите. Надо пройти все.

— Я не гражданин России. Можно участвовать?
Да. Но стоит учитывать, что дорогу до Москвы мы оплачиваем только финалистам — гражданам РФ. Если в финал пройдет иностранец, сможем оплатить только проживание и питание в Москве, без дороги.

— Сколько будет девушек?
За два года проведения финалов таких чемпионатов я видел около 5 девушек. Увы, пока ни одна не занимала призовые места.

— Мне 45 лет, я бородат и студент. Можно?
Да. Можно даже если бородат и не студент.

— Есть отчёты с прошлого финала?
Фотоотчёт и отчёт участника.

— Есть ли возможность поучаствовать хотя бы в квалификационных и отборочных раундах, если мне нет 18?
Да, если система не будет перегружена. Предположительно — не проблема, но в финал вы не пройдёте, увы.

— Где регистрация?
Официальная регистрация вот здесь. Если не знаете что писать в поле «ВУЗ» — пишите «Null, но я окончил школу тогда-то», место работы или любые другие вещи, отражающие реальное положение вещей. Если вы хотите зарегистрироваться вне конкурса (без возможности пройти в финал, но за рейтинг на CF), то вам сюда.

— Круто, но я не могу. Когда следующий чемпионат?
Попробуйте принять участие вне конкурса. Если не получится — Чемпионат проходит каждый год, плюс есть ещё масса конкурсов и контестов. На конкурс летающих роботов с призом в 1 миллион рублей регистрация уже закрылась, но можно следить за нашим корпоративным блогом тут на Хабре — крупные мероприятия будут анонсироваться.

На всякий случай — раз, два и три видео.