VK Cup 2012 — как это было



    Согласно расписанию, вчера позавчера состоялся последний день финала VK Cup 2012, а у меня появилась возможность поделиться впечатлениями о прошедшем мероприятии.

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

    Чемпионат по программированию VK Cup 2012 задумывался как полезное и интересное мероприятие именно для молодых программистов, и, судя по отзывам, нам удалось его таковым сделать. В правилах чемпионата значился необычный пункт «возраст не менее 14 и не более 23 полных лет на момент регистрации». Именно таким образом получилось вырваться из круга профессиональных, опытных участников, сделать соревнование для школьников и студентов. Например, среди финала многие в первый раз участвовали в подобном мероприятии.

    Регистрация стартовала в конце февраля и довольно быстро побила наши ожидания по количеству участников. На момент ее окончания были зафиксировано почти 6000 регистраций из ~90 стран и ~750 городов. В этот же самый момент некоторые опытные члены сообщества выразили свое <фи> ограничивающему возраст правилу. Их можно понять :)

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

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



    Первый из таких раундов был подготовлен небезызвестной Машей Nicolette Михайловой, большой любительницей экзотических и эзотерических языков программирования. Это был Surprise Language Round — необычная форма соревнования, когда участники узнают язык на котором можно сдавать задачи лишь с началом раунда. Языком первого уайлд-кард раунда был выбран необычный Factor. В результате участники на скорость разбирались с его стековой парадигмой, решая несложные задачи. Вот, например, код winger на одну из задач (сложение чисел в произвольной системе счисления):

    USING: io kernel math math.parser sequences locals unicode.case arrays ;
    IN: g
    :: fromdig ( c -- i )
       c CHAR: 9 <= 
       [ c CHAR: 0 - ]
       [ c CHAR: A - 10 + ]
       if ;
    :: todig ( i -- c )
       i 9 <= 
       [ i CHAR: 0 + ]
       [ i CHAR: A + 10 - ]
       if ;
    :: toint ( string radix -- int )
       string 0 [| n c | n radix * c fromdig + ] reduce ;
    :: fromint ( int radix -- string )
       "" int [| str int | str int radix mod todig prefix int radix /i dup zero? not ] loop drop ;
    readln string>number
    readln string>number
    [| n radix | 
       0 n [ readln radix toint + ] times
       radix fromint print
    ] call
    


    Получилось необычно и весело, большинству понравилось. Большое спасибо, Nicolette! Вот здесь есть полные результаты раунда, а попробовать свои силы в решении этих задач можно и сейчас.

    Второй уайлд-кард раунд шел целую неделю. Высокий результат в нем давал возможность запрыгнуть в последний вагон заключительного из отборочных онлайн-раундов, так что его участники старались не на шутку. Кстати, идея задачи на этот раунд вновь была предложена Nicolette, а команда Codeforces подготовила всю инфраструктуру. Раунд шел целую неделю и на нем надо было упаковывать прямоугольники в заданный, максимизируя хитрую целевую функцию. Задачка участникам понравилась, забегая вперед, отмечу, что победитель чемпионата прошел в Раунд 3 именно через этот уайлд-кард.

    Квалификации и отборочные раунды проходили по привычным участникам правилам Codeforces. Над задачами работали сотрудники ВКонтакте, Codeforces и Саратовского ГУ. Nicolette занималась редактурой условий. Надо сказать, что тяжелых фейлов с условиями или задачами не было, все прошло к обоюдному удовольствию участников и жюри. Вот победители этапов:

    • Квалификация 1: Ra16bit (Юрий Писарчук), Беларусь
    • Квалификация 2: Rokyan (Edgar Rokyan), Латвия
    • Раунд 1: RAVEman (Антон Райчук), США
    • Раунд 2: tourist (Геннадий Короткевич), Беларусь
    • Раунд 3: hos.lyric (Kazuhiro Hosaka), Япония


    По результатам раунда 3 определился список 50-ти финалистов. Список стран-участниц финала — Россия, Китай, Япония, Беларусь, Индонезия, Украина, Польша, Тайвань (участники оттуда настаивали на статусе страны), США, Германия, Гонконг (и они настаивали), Индия. Характерно, что довольно много финалистов оказалось из Азии.

    Приготовления к финалу чемпионата шли несколько месяцев. Оказалось, что привезти в Россию группу несовершеннолетних иностранцев не так просто. Команда жюри вела подготовку не только к финальному раунду, но и к игровому неофициальному соревнованию CodeRaces, детали которого в полной мере не раскрывались участникам заранее.



    13-го июля в самом центре Санкт-Петербурга в отеле «Кемпински, Мойка 22» состоялось открытие чемпионата. Участники были представлены друг другу посредством слайд-шоу из их неформальных фото. Ведущие называли некоторые интересные факты о них, например: «На вопрос о городе своей мечты, neex.emil назвал Анк-Морпорк», «Свою первую строчку кода SergeyRogulenko написал в 6 лет!»



    Финалистам выдали небольшие, но приятные сувениры. С короткими, но пламенными речами к участников приветствовали Илья Перекопский (вице-президент ВКонтакте), я (Михаил Мирзаянов, руководитель Codeforces и представитель СГУ). Чуть позже, каким-то чудесным образом решив сложности с рейсами из Европы, в зале появился Павел Дуров. В своей приветственной речи он анонсировал увеличение призового фонда, чем сорвал аплодисменты зала. Таким образом, через пару дней ребятам предстояло побороться за:

    • 1 место — $30000;
    • 2 место — $20000;
    • 3 место — $10000;
    • 4-5 место — $2000;
    • 6-10 место — $1000.


    В этот же день все смогли насладиться прогулкой по рекам и каналам Санкт-Петербурга. Интересно, почему нашим гидам так нравится скорбная сторона истории? При упоминании Кутузова, наш гид мгновенно рассказала обстоятельства его гибели. Мы узнали, кто сидел в «Крестах» и все о смертях в царской семье. Интересно, какого иностранцам все это слышать? В самом деле, хотелось как-то попраздничнее!



    Руководство ВКонтакте вовсю общалось с финалистами. Павел делился какими-то планами, выслушивал впечатления ребят. Поездка продолжалась довольно долго, но скучающих не было.

    Следующий день был в основном посвящен неофициальному игровому мероприятию CodeRaces. Участникам предлагалось написать искусственный интеллект для машинок, которые наперегонки гоняют по полю, собирая флажки, отстреливаясь покрышками и сгорают синим пламенем, когда их хит-пойнт заканчивается. Дополнительное развлечение привносили два препятствия на поле и станции техобслуживания, где можно подлечиться. Участники увлеченно три с половиной часа кодили ботов. Использовать можно было Pascal, C++ или Java. Большинство выбрали C++, а вот Pascal может и был полностью обделен вниманием. Ну и черт с ним :) Кстати, на самом соревновании доступен значительно более широкий список языков: С/С++, Pascal, Java, С#, Python, Ruby, PHP, OCaml, Haskell, Perl, Scala.



    Вечером того же дня в банкетном зале отеля состоялось шоу, на котором в ходе турнира определился победитель. На большом экране демонстрировались все игры турнира, а участники экспрессивно болели. Было хорошо видно, что чем ближе к финалу, тем более умные стратегии остаются. Забавно, что многие участники научились объезжать препятствия, а вот в стены врезались все. В финал вышли четыре стратегии: yeputons (Россия), rudradevbasak (Индия), tourist (Беларусь), iwiwi (Япония). На первом месте до финала шел Егор Суворов (yeputons), но в финале против сильнейших соперников его стратегия подкачала и первое место занял rudradevbasak. Ниже можно посмотреть ролик с записью одного из трех финалов. Лучшие три места получили призы, а заряд бодрости от участия — все.





    В этот день не обошлось без русско-китайского колорита. Один из финалистов из Поднебесной расстроенно сообщил, что на Невском какие-то негодяи отняли у него фотокамеру. Он порывался забить на все мероприятия и пойти в полицию, но ВКонтакте решили дипломатично замять ситуацию, возместив участнику потерю. Кстати, он не растерялся и на вопрос о модели написал нехилую (точные цифры не помню). Кстати, когда ему потом купили и отдали камеру, он говорил, что перепутал и имел ввиду 5D Mark, но здесь уж ему предложили все-таки сходить в полицию. Вы не поверите: он не пошел :)

    Следующий день был целиком и полностью посвящен основному мероприятию — финальному раунду VK Cup 2012. В 11:00 в штабе ВКонтакте был дан старт финалу. Первым (на 15-й минуте) задачу E сдал небезызвестный tourist (Геннадий Короткевич, Беларусь), показав остальным участникам, какая из задач попроще. За ним последовали theycallhimtom (США), tmt514 (Гонконг). Участник из Китая s-quark первым открыл задачу C, он сдал ее на 21-й минуте. Дальше большое количество участников стали сдавать эти две задачи, хотя вскоре vlad89 (Влад Симоненко, Украина) открыл B. Эти задачи и оказались самыми решаемыми задачами финала. Наши соотечественники не смогли показать быстрый старт — лидером среди наших на старте стала natalia (Наталья Бондаренко, Россия), решившая на 29-й минуте задачу С. Ход соревнования показал, что большинство участников отослали три задачи, а в группе с четырьмя задачами было в большинстве представлены ребята из Азии. За 15 минут до конца Геннадий Короткевич отослал наиболее сложную задачу A, его решение прошло предварительное тестирование и к концу кодинга он возглавлял турнирную таблицу. За ним следовали sevenkplus и s-quark из Китая. Однако впереди предстояло финальное тестирование на полном наборе тестов, так что делать какие либо выводы было рано. Ближе к концу соревнования финальный раунд посетил исполнительный директор ACM-ICPC (студенческого командного чемпионата мира по программированию) William Poucher. Обладая весомейшим авторитетом и удивительной харизмой, он скрасил финал, пообщавшись с участниками и фотографируясь вместе с ними.





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

    Закрытие состоялось в том же замечательном зале отеля Кемпенски, где и были проведены другие вечера. Некоторое время участники наслаждались вкусным ужином, живой музыкой и волнением от того, пройдут ли их решения все тесты или нет. Вел закрытие дважды чемпион мира по программированию, разработчик ВКонтакте Андрей Лопатин. Я даже немного не ожидал, что у него так хорошо получится. Молодец, Андрей! Речь держал William Poucher, потом в виде короткой презентации были открыты результаты. Забавно было слышать одновременный вздох разочарования русскоязычной аудитории и радость китайцев, когда решение Геннадия по задаче А оказалось неверным. Он переместился на 3-ю строчку, а первые два участника оказались гражданами Китая. Под дружные аплодисменты всего зала Павел Дуров вручил десятке финалистов дипломы победителей и красивые ноутбуки «HP Envy 14 Spectre», а тройке лидеров были вручены символические чеки. Чемпион получил позолоченную награду в виде массивной звезды на подставке с надписью VK Cup 2012. Зал очень долго аплодировал победителям.

    Итак, вот имена победителей:

    1. sevenkplus, Peter Gu, China
    2. s-quark, Qinshi Wang, China
    3. tourist, Геннадий Короткевич, Беларусь
    4. dolphinigle, Irvan Jahja, Indonesia
    5. yeputons, Егор Суворов, Россия
    6. WJMZBMR, Tom Chen, China
    7. shangjingbo, Jingbo Shang, China
    8. vlad89, Владислав Симоненко, Украина
    9. SergeyRogulenko, Сергей Рогуленко, Россия
    10. meret, Jakub Pachocki, Poland


    Уже в заключении церемонии Андрей Лопатин вышел на сцену и поблагодарил всех финалистов, всех организаторов и всех причастных к проведению. Особые аплодисменты он сорвал, когда сообщил, что подарочные ноутбуки будут вручены всем участникам финала, а не только лучшим 10 из них! 4/5 аудитории заметно повеселело!

    На этом официальная часть закрытия была закончена, но многие из участников не спешили уходить в номера. Группа русскоязычных ребят еще долго оставалась в зале, обсуждали прошедшее мероприятие. Павел тоже задержался, воспользовавшись моментом, общался с участниками. Я же в этот момент восстанавливал штатную работу Codeforces, поэтому в беседе принимал участие мало. А жаль, было весело.





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

    • kelvin:
      +1, it was a great event and it is really lucky and enjoyable to be here. All the thanks to VK and Codeforces and all who helped hold this contest!
    • -XraY-:
      Agree! I've met a lot of new people, competed in some rounds, lived in the beautiful hotel in the center of Saint-Petersburg. My favorite part — codegame. It was very funny to watch cars, kicking each other with tyres.) I'm fully satisfied, thanks a lot to organisators.
    • winger:
      Ну и какого черта я слил round3? :)
    • meret:
      Thanks for the really great event. This was definitely one of the best onsite competitions I've been to.
    • cgy4ever:
      Me too, VK is really the winner of the contest of contests. VK really make everyone happy in the event, including the participant like me that not performed well at the final round. By the way, I found my name-card with red handle, but in fact I'm yellow. So I want to become red by the final round. But unfortunately I become more 'yellow' caused by mistakes in different problems. So it gives me a lesson: coding/thinking carefully (and maybe checking twice) is more important to the speed of coding.


    Надеюсь, что у нас получится организовать VK Cup 2013 в следующем году. Спасибо всем, кто принимал участие как в самом соревновании, так и его подготовке!

    Подборка ссылок для самых любопытных:

    Поделиться публикацией
    Комментарии 28
      +10
      Китай захватывает…
        +1
        И не говорите, у меня прошивка на телефоне китайская (MIUI), и пишу я на фрейсворке, который написал китаец (Yii), готов признаться, что Китай и ближайшие выходцы из него очень прокачанные в технологическом плане.
          +5
          А вы математически посчитайте, у кого вероятность гениев на квадратный метр больше)
            +5
            На квадратный метр? Китай даже не в десятке по показателю плотности населения.
            0
            Хватит это терпеть! :)
            0
            Хватит кормить Китай!
              0
              Но при этом на онсайт TCO отобралось больше человек из Питера, чем из Китая (и из любой другой страны, кроме России)
              0
              Молодец Короткевич. Надеюсь, он будет и дальше радовать белорусов своими успехами.
              0
              А Тайвань и Гонконг статусы стран получили или нет?
                –1
                google.com в помощь ;)
                  +1
                  Тайвань признаётся независимой страной частью государств мира, но не всеми. Впрочем, в любом случае, считать его принадлежным материковому Китаю нет смысла — он совершенно самостоятелен, сильно от него отличается и не желает иметь с «большим братом» ничего общего.

                  Гонконг статус страны уже не получит, он пробыл в британской аренде долгое время и сейчас официально вернулся в лоно матушки-родины (от чего гонконгчане совершенно не в восторге). В данный момент это нечто вроде автономной области с особым статусом, где всё ещё есть собственная валюта, паспорта и законы, но которая официально подчиняется Пекину.
                    0
                    А так же своя полиция и своя почта :)
                  0
                  После такого надо ждать повышения ставок на mail.ru Russian code Cup. 30k$ за первое место — это конечно рекорд подобных соревнований.
                    +1
                    Нет, не рекорд — первые 3 TopCoder event'а имели приз за первое место 100к, потом он на некоторое время опустился до 50к
                    +1
                    Питерский парням респект!
                      0
                      Например, среди финала многие в первый раз участвовали в подобном мероприятии.


                      Надо понимать, что это во многом связано с нижним ограничением возраста. Я думаю, что если взять тех, кто был eligible к онсайтам прошлого года, то процент людей не бывших ни на одном онсайте будет примерно таким же, как на GCJ/TCO
                        +1
                        Респект организаторам, что победили сильнейшие, небыло подгонок результатов, дополнительных туров и прочей чепухи. Это делает честь и организаторам, и нашей стране.
                          0
                          Дуров больше не стесняется фотографироваться)
                            0
                            Как жаль, что у Гены не прошла задача А.
                              0
                              Видеть под словами «Оказалось, что привезти в Россию группу несовершеннолетних иностранцев не так просто.» кучу мешков…
                                +1
                                3 guys 1 cup.
                                  +1
                                  Интересно предложили ли финалистам работу.
                                    0
                                    Как ни странно, про то, как круто и интересно работать в VK, нам почти не говорили.
                                      0
                                      Одно дело решать задачи по программированию, а другое — внедрять реальные решения, большинство из которых работают, не являясь примером эстетичности и красоты.
                                        0
                                        Это уже проблемы координатора, делать из отдельных программистов команду.
                                      +1
                                      Level: Asian

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

                                      Самое читаемое