Блог пользователя pkhaustov

Автор pkhaustov, 12 лет назад, По-русски

Вот и пролетела вереница новогодних праздников, большинство из нас неохотно возвращаются к трудовым будням. Кроме того, конец новогодних праздников совмещен и с началом последнего этапа голосования "Итоги 2012 года" на сайте проекта SnarkNews. Собственно, об этом событии мне бы и хотелось поговорить в этом посте.

Казалось бы, обычное голосование, которое вполне может быть результатом субъективности и чувства юмора участников олимпиадного движения. Но если взглянуть на это голосование под хотя бы сколько-нибудь отличным углом, то в нем можно увидеть неплохую попытку собрать в одном месте все самые значимые события и результаты прошедшего года, выделить людей, которые внесли наиболее значимый вклад в олимпиадное движение. Хотелось бы попросить не относиться пренебрежительно к такого рода голосованию. Если нет желания голосовать объективно — лучше просто не голосуйте.

Год выдался крайне богатым на события: ИТМО стал четырехкратным чемпионом Мира, Евгений Капун стал третьим в истории двукратным абсолютным чемпионом Мира, Роман Андреев стал победителем Facebook Hacker Cup 2012, Егор Куликов стал победителем TopCoder Open 2012, Геннадий Короткевич поступил в ИТМО, Владислав Епифанов первым откликнулся на слова Петра Митричева "Попробуйте, отберите в следующем году" на Russian Code Сup, школьники сборной России отрешались на четыре золотых медали на IOI, СпбГУ #4 уверенно победили на Всесибирской олимпиаде, а под конец года настоящий action развернулся в последние минуты заморозки на NEERC, победителем которого в третий раз подряд стала команда Национального исследовательского университета ИТМО. И это — только самые крупные победы команд и участников из России на сравнительно крупных соревнованиях. Если приглядеться повнимательнее, то можно вспомнить несколько не столь приятных для постсоветского сообщества олимпиадных программистов событий, таких как победа Johnny Ho на IOI 2012, победа Китая в суммарном зачете все того же IOI 2012, просто необъяснимуя неудача MIPT The Sun на NEERC с несданной задачей G, "железное" доминирование Saratov SU #3 над другими командами этого университета все на том же NEERC 2012. Если говорить о чем-то более радужном, то можно также отметить огромное количество раундов в 2012 году на Codeforces, золотое выступление MIPT Waterogers на финале ACM ICPC 2012, два Белорусских комплекта медалей все на том же финале ACM ICPC 2012, проведенные VK Cup и AI Cup. Об этих событиях помнят все, они обсуждались, многие из них неоднократно становились причинами разного рода шуток. Но есть события и, связанные с ними, люди, которые не столь заметны и обсуждаемы, насколько они этого заслуживают, исходя из их важности для нас и нашего сообщества. На одном из таких событий я бы и хотел сделать серьезный акцент. Но... Обо всем по порядку.

На дворе начало августа. Близятся Петрозаводские сборы. Я усиленно готовлю контест для этих сборов. Во время подготовки я понимаю, что одну из задач неплохо бы было сделать интерактивной, но я не имею ни малейшего представления о том, как же грамотно подготовить интерактивную задачу. Я пытаюсь придумать хоть сколько-нибудь подходящую замену интерактивности, но получается какая-то ерунда. Как итог, одна из малопригодных замен интерактивности оформляется в polygon. К моему счастью, Павел Абизяев (Nyatl) и Владимир Чалышев (cmd) согласились мне помочь с подготовкой контеста (за что им отдельное "спасибо"). От Паши Абизяева я узнал о том, что уже в сентябре планируется Гран-При Удмуртии, автором которого является он сам (если я не ошибаюсь, идея одной из задач принадлежит его тренеру — Юрию Когану). И, казалось бы, нет в этом ничего удивительного, это — далеко не первый Гран-При Удмуртии, в подготовке которого участвует Паша Абизяев. Но дело в том, что контест этот — особенный, все десять предложенных в нем задач — интерактивные. Да, Паша сам разобрался с тем, как разрабатываются интерактивные задачи, сам подготовил десять интерактивных задач достаточно высокой сложности (за исключением окончательных условий, с ними отдельная песня была). Более того, он лично предложил модифицированные варианты этих же задач для второго дивизиона Открытого кубка, опять же, всех десяти. Чтобы больше не возвращаться к теме моего контеста, скажу, что с непосредственной помощью Паши Абизяева мы подготовили интерактивный вариант той самой злополучной задачи и дали его на Петрозаводские сборы. Да, не все так гладко прошло на контесте, как хотелось бы, но эта задача стала первой интерактивной задачей в истории Петрозаводских сборов. С ее помощью мы предупредили несколько серьезных ошибок на будущем Гран-При Удмуртии. Кроме того, тренер Саратовского ГУ и один из авторов проекта Codeforces — Михаил Мирзаянов на фоне всей этой Петрозаводской шумихи на тему интерактивных задач опубликовал на Codeforces пост, в котором описал свой взгляд на интерактивные задачи и поднял на обсуждение детали реализации интерактивных задач. Позже, это вылилось в модификацию библиотеки testlib и проекта polygon, а также первую интерактивную задачу на Саратовском четвертьфинале.

Стоит отметить, что Паша до последнего заботился о том, чтобы участники получали наиболее объективные и информативные вердикты. Буквально за считанные часы до начала Гран-При Удмуртии в ejudge еще вносились изменения с целью исправить неправильные вердикты, которые он периодически выдавал. Удивительно, но контест (не смотря на достаточно большую очередь тестирования, что вполне объясняется интерактивностью) удался на славу. После него — море положительных отзывов и огромное количество обсуждений на тему интерактивных задач. Стоит ведь задуматься над тем, что такое интерактивные задачи. Это — огромный пласт принципиально новых задач, решать и тестировать которые намного сложнее. Многие из этих задач без интерактивности вообще не имеют смысла. Без всякого преувеличения этот Гран-При можно назвать настоящим прорывом. Это был невероятный по сложности и времени подготовки эксперимент, который дал огромный толчок развитию спортивного программирования. Что касается самого Паши Абизяева, то мне бы хотелось отметить его невероятное умение придумывать задачи. Он видит задачи во всем, что его окружает. Фанатизм? Может быть. В плане участия в олимпиадах он не был настолько же заметен, насколько и такие гранды подготовки контестов, как Андрей Станкевич и Петр Митричев, но как автора задач я бы вполне мог поставить его с ними в один ряд. Если посмотреть на тот проблемсет, который удался ему на последнем Гран-При Удмуртии, то можно заметить, что кроме двух задач, каждую из задач решила хотя бы одна команда, но лишь одной команде удалось решить хотя бы половину задач. А одна из задач и вовсе ушла на Новогодний "Простой" контест.

Возвращаясь к теме, которую я затрагивал в самом начале этого поста, я бы хотел сказать, что этот проблемсет действительно заслуживает звания "Лучший проблемсет 2012 года". Хотелось бы, чтобы такая инициатива и такой труд были вознаграждены хотя бы таким образом. Все сравнимые с ним проблемсеты готовились целыми группами разработчиков, в то время как этот (за исключением окончательных текстов условий) Паша подготовил сам, без всякой помощи. Можно говорить о том, что это — агитация. Словом, я проконсультировался с Олегом Богдановичем, агитация отнюдь не запрещается. Моей основной задачей было обратить внимание общества на этот проблемсет и его важность для сообщества спортивных программистов.

На этом, господа, мои мысли и мой словарный запас исчерпаны. Спасибо за внимание.

  • Проголосовать: нравится
  • +49
  • Проголосовать: не нравится

»
12 лет назад, # |
Rev. 2   Проголосовать: нравится +23 Проголосовать: не нравится

Уточнение: изменения вносились не в основной код ejudge, а в форк ejudge, используемый на серверах проектов OpenCup/SnarkNews.

И уж раз речь зашла о ГП Удмуртии и интерактивных задачах: неплохо было бы сделать и выложить в открытый доступ своего рода "тестовую задачу" с разными решениями, которая бы позволяла понять, какие из "интерактивных" вердиктов и насколько корректно реализованы в тестирующей системе. В идеале это выглядит так. Есть система, заявляющая о поддержке интерактива. Настраивается эта задача, сдаются решения, по набору вердиктов определяется тип поддержки, после чего пишется manual с отличиями от условного "канона".

Например, сейчас в такой задаче есть необходимость для того, чтобы проверить корректность патча к ejudge 2.3.26 (в ближайшее время намечается обновление системы на серверах SnarkNews/OpenCup).

»
12 лет назад, # |
Rev. 2   Проголосовать: нравится +15 Проголосовать: не нравится

Товарищи! Может быть, хватит поддаваться магическому воздействию сего блога и бездумно отдавать свои драгоценные голоса за единственный в истории заминусованный контест Opencup, а переголосовать и выбрать по-настоящему достойный проблемсет года — NEERC 2012?

Сегодня последний день голосования и на данный момент NEERC 2012 отстает на 5 голосов.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +52 Проголосовать: не нравится

    Честно говоря, я не заметил в проблемсете нирка ничего такого чтобы выделяло его из целого набора хороших контестов — кучи этапов кубка, петрозаводских контестов и много другого. А ГП Удмуртии — как минимум однозначно самый необычный контест года (я тут не учитываю всякие IPSC и подобное). И он явно на долго запомнится.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится -8 Проголосовать: не нравится

      Герострат тоже запомнился, это не значит, что он сделал что-то хорошее. Как по мне, так все без исключения этапы кубка доставили намного меньше, чем один NEERC.

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится +64 Проголосовать: не нравится

        Я думаю, все рады, что Мишки наконец прошли в финал, но нельзя же теперь в честь них признать их командой года, NEERC, который стал для них триумфальным, проблемсетом года, а стулья, на которых они сидели, стульями года? :)

        • »
          »
          »
          »
          »
          12 лет назад, # ^ |
            Проголосовать: нравится -10 Проголосовать: не нравится

          Форс на команду года не удался, ладно, я и сам за МФТИ голосовал, но по мне по задачам из трех номинантов проблемсет NEERC был действительно самым лучшим. Значит будем поздравлять Пашу Абизяева.

          Кстати, ведь надо было вас делать командой года; на финале и третьи места занимают, и выигрывают по два раза — а вы в этом сезоне совершили то, чего мало какой команде удается достичь на протяжении долгих лет :D

»
12 лет назад, # |
Rev. 2   Проголосовать: нравится +44 Проголосовать: не нравится

Без всякой агитации давно проголосовала на ГП Удмуртии :) Мне контест очень понравился и, как зашла речь о проблемсете года, сразу вспомнился. Редкий случай, когда в каждой задаче, начиная с самых простых, стандартные идеи практически не помогают, нужно придумывать что-то хитрое. ИМХО, хорошо отделяет людей, которые думают, от тех, кто преимущественно вбивает/копирует e-maxx стандартные алгоритмы или пропихивает шаманства.

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

Оффтоп: "железное" доминирование улыбнуло :)

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +46 Проголосовать: не нравится

    Справедливости ради — утверждение "хорошо отделяет людей, которые думают, от тех, кто преимущественно вбивает/копирует e-maxx стандартные алгоритмы или пропихивает шаманства" не совсем верно: там к сожалению заходили шаманства и бред, а всё потому, что нигде ничего не было сказано про "в худшем случае"/"в среднем", а интеракторы предполагали второе. Ну и ещё один минус контеста — все задачи "одинаковые" (ведь интерактивными можно было сделать кучу совершенно других задач, от онлайн структур данных до игр вроде шахмат).

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

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

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится +8 Проголосовать: не нравится

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

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

      Про шаманства в задаче A я знал. Но это же самая легкая задача — пусть сдают всё что угодно. В J, к сожалению, поставил большое ограничение на запросы — было у меня другое решение, но потом про него забыл. Хотя я рассчитывал, что посдают 6-8 задач, поэтому если 1-2 зашаманят, то ничего страшного.

»
12 лет назад, # |
  Проголосовать: нравится +37 Проголосовать: не нравится

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

Влияние проблемсетов NEERC или финала в этом году оставалось таким же, как и в прошлые, в то время как даже процесс подготовки Гран-При Удмуртии привёл к появлению первой интерактивной задачи на сборах в Петрозаводске (и, соответственно, поддержке интеракторов в используемой для петрозаводских сборов версии testsys), к появлению статьи Михаила Мирзаянова о стандартах интерактивных задач (по сути, первой попытки широкого обсуждения формата интерактивных задач).

Всё же не так часто появляются проблемсеты, открывающие обсуждение (и развитие поддержки) целого класса задач, ранее во многих системах просто не поддерживаемого... и отметить появление подобного проблемсета в "Итогах года" было бы закономерно.

И судя по обсуждению, можно сказать, что выбор в данной номинации в каком-то смысле делается между развитием и стабильностью...

»
12 лет назад, # |
  Проголосовать: нравится +25 Проголосовать: не нравится

Справедливости ради замечу, что интерактивная задача на четвертьфинал в Саратове была предложена Михаилом Мирзаяновым на заседании жюри в середине июля, т.е. раньше интерактивной задачи в Петрозаводске и ГП Удмуртии. Так что процесс распространения интерактивных задач происходил скорее не последовательно, а параллельно на разных соревнованиях. Идея витала в воздухе.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится

    Все верно. Кстати и в testsys вроде интерактив появился еще до последних летних сборов в Петрозаводске и был внедрен, кажется, на школьных сборах.

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      На школьных сборах интерактивы совсем давно уже были. Только там judge Linux'овый, а в Петрозаводске виндовый. В виндовом judge yeputons писал сколько-то времени назад. В петрозаводске было первое испытание именно этого на контесте.

      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится +10 Проголосовать: не нравится

        Причина кроется в том, что интерактивы есть на IOI.

»
12 лет назад, # |
  Проголосовать: нравится +22 Проголосовать: не нравится

Пост добра. Всем плюсы!

Спасибо всем за поддержку! И спасибо тем, кто помогал мне с контестом!

Главной целью контеста было выявить все проблемы с интерактивками: как писать интеракторы, как писать условия и т. д., чтобы в следующий раз прошло всё идеально. Но больше такого я делать не буду: в следующий раз их будет 1 или 2.