19 сентября 2011 в 15:49

Финал @ Russian Code Cup 2011

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

image


С начала года были проведены отборочные туры, в которых приняли участие более 3000 человек — это первое мероприятие такого масштаба, проводимое компанией Mail.ru Group.

На входе стояли девушки, которые на сенсорных столах регистрировали участников:

image

image

image

Отбор прошли 600 человек из самых разных стран, но до финала добрались только самые сильные — те, кто не сделал ошибок в отборочных турах (в каждом было по 6 задач). 50 лучших программистов, 50 гениев из разных стран – 26 из России, 11 из Украины, 7 из Беларуси, двое из США и по одному из Грузии, Армении и Швейцарии.

image

image

image

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

Причем, что меня удивилоо – 15 финалистов моложе 20 лет, у 29 человек возраст в диапазоне 21-25 лет и лишь шестеро старше 26.

image

В самом зале, честно скажу, атмосфера была не из разряда «entertainment», но с другой стороны, зрелищ никто и не обещал — все знали, куда шли. Стояла почти идеальная тишина — была выразительно слышна мозговая активность участников, которую то и дело перебивали клацанье клавиш и указания в наушниках видеооператоров. Работа кипела — кто-то продумывал решение задачи на листе бумаги, кто-то сразу всеми десятью пальцами приступал к написанию кода, а кто-то просто грыз спонсорскую ручку.

image

image

image

image

image

image

image

На фото видно, что к кое-кому пришло гениальное решение задачи :)

image

Каждый мог прийти со своим ноутбуком, второй монитор поставить было нельзя — в плане условий все были на равных. Хотя чьи-то рабочие места вызывали удивление. Вот, например, 4-килограммовый игровой ASUS G73 Stealth :)

image

Внезапная девушка!!! Единственная участница олимпиады!

image

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

Когда я прочитал задания… честно скажу, стало стыдно :) В некоторых заданиях я даже не понимал, чего хотят — это не говоря уже про поиск ответа и написание решения на языке программирования. По словам организаторов, среднестатистический выпускник технического вуза вряд ли сможет решить за день любую из тех задач, которые участника финала Russian Code Cup «щелкали» за 20-40 минут. Впрочем, можете сами во всем убедиться и, при желании, попробовать свои силы.

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

Тем временем...


Пока программисты творили, для журналистов была организована встреча с руководством компании Mail.ru Group – Дмитрий Гришин (генеральный директор) и Владимир Габриелян (технический директор) охотно отвечали на все вопросы.

image

Помимо сотрудников Mail.ru Group были и сотрудники СПбГУ ИТМО (Санкт-Петербургский государственный университет информационных технологий, механики и оптики) — Анатолий Шалыто (заведующий кафедрой «Технологии программирования»), Парфёнов Владимир (декан ФИТиП, заведующий кафедрой ИС) и Андрей Станкевич (доцент кафедры компьютерных технологий) — те умы, которые придумывали задачи для олимпиады и которые по совместительству тренеруют подрастающее поколение.

image

Очень понравилось их отношение ко всей этой ситуации — видно, что у них есть четкое понимание проблемы образования и желание ее как-то решить. Понятное дело, что не всего образования в целом (этим пусть занимаются всякие Фурсенки) — я говорю именно о программировании.

Рассказывать про существующую проблему не надо — все всё понимают. Денег нет, старые “мамонты” учат уже чему-то оторванному от реалий, а новые кадры при текущем положении дел в преподавании никак не заинтересованы. Точнее, денег-то на образование выделяют полно, но только расходуются они неправильно — тонким слоем распределяются по всем образовательным учреждениям.

Совсем другое дело, когда вопрос образование решается совместными усилиями — вузами и “бизнесом”. В данном случае компании Mail.ru Group есть что предложить и сейчас они находятся на стадии определения оптимальных векторов стимулирования подрастающего поколения.

Так по их мнению, по всей стране есть порядка 2000 талантливых программистов, которых нельзя учить так же, как всех остальных — к ним нужен индивидуальный подход. И речь тут не столько о солидных именных (“точечных”) стипендиях, основная задача — популяризация профессии программиста, создание элиты программистской науки. В общем, “нельзя собрать урожай, съедая весь посевной материал” — это вроде как уже все поняли, но только самые заинтересованные действительно стараются что-то сделать. Сейчас нужно идти по другому пути — постараться сделать так, чтобы молодые и талантливые умы оставались в России — если не на постоянной основе в ВУЗах, то хотя бы в Российских компаниях. Ведь вакансий тысячи, но при этом — колоссальный недостаток хороших программистов. Получится это или нет — очень интересный вопрос.

Результаты


Хотите — верьте, хотите — нет, но церемонию награждения начали роботы. После небольшого «танца» на сцену вышел ведущий и объявил три довольно необычных номинации, которых никто не ждал.



Первая, «Литературная премия» — досталась программисту, который написал самый длинный исходный код для решения какой-либо из финальных задач. Им стал Егор Куликов из Санкт-Петербурга:

image

Следующая премия «За волю к победе» досталась программисту, сделавшему наибольшее количество попыток для решения задачи – им стал Иван Метельский из Минска:

image

Неожиданный подарок решили сделать программисты поискового отдела компании Mail.ru Group – Macbook Pro они вручили Михаилу Колупаеву из Томска за хитрый алгоритм, который он предложил.

image

Ну и последняя награда досталась Наталье Бондаренко из Саратова, как единственной девушке-участнице. Наташа очень удивилась такому повороту событий и пожелала, чтобы в следующем году ей эта награда не досталась – мол, в 2012 буду участвовать с подружкой :)

image

Потом снова танцы, но на этот раз уже от менее традиционных форм жизни. Прощу один раз это увидеть, чем пытаться рассказать:



Ну а дальше ведущий решил объявить трёх главных победителей соревнования.

image 3 место и приз в $3000 достался Михаилу (darnley) Дворкину из Санкт-Петербурга:

image

Бонус для зрителей:

image

image 2 место и приз в $5000 завоевал Евгений (bsod) Капун из СПБ,

image

image Ну и первое место и приз в размере $10000 достался…. барабанная дробь… Петру (Petr) Митричеву! «Стабильность – признак мастерства» — в этом легко убедиться, если вбить в гугле имя этого человека. Да чего уж там, даже у нас на Хабре про него была отдельная статья, покруче чем про Чака Норриса. Неоднократный победитель всевозможных мероприятий (таких как Google Code Jam, TopCoder Open, Facebook Hacker Cup) – программист номер один в мире.

image

Все вместе:

image

Приятно, что многие есть на Хабре или читают его.

Молодцы ребята, могёте!
Boomburum @Boomburum
карма
738,2
рейтинг 0,2
Местный
Самое читаемое Разработка

Комментарии (82)

  • +21
    Не ожидал, что Mail.ru возьмется за организацию мероприятий такого плана. Молодцы)
  • +4
    Побольше бы таких мероприятий. Талантливых людей в России хватает, им просто нужны возможности для развития.
  • +5
    Молодцы! Так держать!

    А что на 7-ой фотке делает растение из PvZ? :)

    • 0
      Растёт! :)
      • 0
        Кто-то из кодеров принес, вместо кактуса! :)
  • +2
    Мои поздравления!
  • +3
    Почитал задания… Молодцы ребята ;-).
    Особенно порадовало, для меня было неожиданностью —
    "Решением задачи является программа, написанная на одном из допустимых языков программирования: Java, Python, C/C++, C#, Perl."
    Я почему то всегда думал, что такие мероприятия исключительно на С/С++ проводятся.
    • 0
      А почему неожиданность? На некоторых олимпиадах даже Pascal разрешают (а где то даже PHP 0_о)
      • +2
        Pascal — вполне нормальный язык, на котором можно реализовать все, что можно реализовать, например, на C++. Другой вопрос — сколько времени уйдет на реализацию :).

        Странно, что в списке допустимых языков python — в олимпиадном программировании на нем писать довольно тяжело — интерпретируемые языки (java в том числе) не всегда укладываются по времени.
        • 0
          У каждого языка свои преимущества. В спортивном программировании не стоит сильно привязываться к одному языку, нужно знать и «не родные» языки хотя бы на среднем уровне(написание циклов, методов и т.п.), иногда может очень пригодиться. Например, Java имеет встроенную поддержку длинной арифметики, в то время как на C/C++/C#(BigInteger появился только в 4 версии фреймворка) приходится писать ручками, на что уходит драгоценное время.
          • 0
            Полностью согласен. С другой стороны, на командных олимпиадах достаточно, чтобы Java на среднем уровне знал только один человек, который и будет писать длинную арифметику в случае необходимости.

            Мне, признаться, так и не удалось «пересесть» на Java, потому что для коротких задач писать довольно объемный листинг кода со стринг токинайзером довольно некомфортно :).
            • 0
              А вы попробуйте вместо StringTokenizer использовать java.util.Scanner, станет намного удобнее.
              • 0
                Scanner проигрывает, когда надо например быстро прочитать из файла миллион чисел
                • 0
                  Вполне возможно, но зачастую скорость чтения входного файла непринципиальна, а вот скорость и удобство написания этой части кода со сканером выше.
                • 0
                  Верно, поэтому StringTokenizer'ом приходится пользоваться. Бывает, что со Scanner'ом решения просто в TL не укладываются.
                  • 0
                    Если вы от одного использования j.u.Scanner не укладываетесь в TL, наверное вообще не стоит переводить вход через уровень строк.
                    char c; int next = 0;
                    while ((c = System.in.read()) != -1)
                    	if (c!= ' ')
                    		next = next*10 + (c - '0');
                    	else {
                    		target_array[++i] = next;
                    		next = 0;
                    	}
                    }
                    

                    Хотя никогда не сталкивался с такой проблемой.
                    • 0
                      только переменная c типа int, конечно
                    • 0
                      Кто-то так и делает: codeforces.ru/contest/115/submission/702249

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

                      Поэтому и используют StringTokenizer.
                      • 0
                        Ну вот Митричев использует код повторно.
                • 0
                  а вообще быстрее и не переходя на уровень строк использование BufferedReader и StringTokenizer
                  • 0
                    Интересно как, когда StringTokenizer конструируется из String.

                    Честно говоря, из комментария выше впервые о нем узнал, что вы там нашли не пойму. String.split() на крайний случай — то же самое по смыслу и в 3 раза короче.
        • +3
          участник не обязан писать все задачи на одном языке.
          прикинув сложность решения, можно понять, имеет смысл писать его на питоне или нет.
          простые задачи на питоне пишутся короче и быстрее, а скорость написания важнее скорости работы, лишь бы последнее укладывалось в лимит.
          (если что, я однажды выходил в финал Google Code Jam, используя только питон)
          • 0
            а скорость написания важнее скорости работы, лишь бы последнее укладывалось в лимит.

            Буквально позавчера мы с командой закончили участвовать в «зеркале» Петрозаводских сборов (подготовка перед ACM). На этих задачах python (2.5) по времени валился только так, если решение было сложнее O(NlogN). Об использовании длинной арифметики и словарей даже говорить не приходится :).

            По моему скромному мнению, лучшее решение для олимпиадного программирования — все-таки C++ (разумеется, при разрешенном использовании stl) в связке с java для задач с BigInt'ами.
            • 0
              это сильно зависит от набора задач.
              на некоторых контестах ограничения такие, что скриптовые языки действительно присутствуют «для галочки».

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

              я в качестве запасного языка использую java (для трудоемких задач, или если питон запрещен)
              • 0
                Верно. К слову, на «солидных» контестах задачи составляются так, чтобы использование скриптовых языков не давало каких-либо серьезных преимуществ.

                В любом случае, «на вкус и цвет...», как говорится ;).
        • +2
          Расскажите об этом Петру Митричеву (победителю), который 99.9% решений уже давно на Java пишет.
      • +3
        Палку в сторону Pascal кидаю обычно те, кто никогда на нем ничего не писал.
        • +1
          Эта ситуация не только в отношении Pascal. По жизни — самые ярые противники чего бы то ни было частенько, оказывается, не шибко разбирались в проблеме.
          • 0
            Лично я на всех школьных городских и областных олимпиадах писал на Pascal. Ничего не имею против него, как языка, но всё-таки, на более серьёзных олимпиадах я его не часто встречал.
    • 0
      ИМХО, маловато языков. На чем умеешь — на том и пиши! Старый добрый pascal уже вообще, видать, за язык не считают…
      • 0
        У истинного pascal ограничение памяти 64kb. Но на самом деле можно было бы предложить участникам Delphi или free pascal…
        • 0
          А как там сейчас со стандартной библиотекой? Сомнительное удовольствие писать std::map, пока все сдают задачи.
          • +2
            Истинные гении и пишут на паскале, если кто слышал про Короткевича. И поверьте он std::map напишет быстрее чем вы условие задачи прочитаете=)
            • 0
              Истинные гении знают все 5 предложенных языков и под каждую задачу выбирают лучший, исходя из удобства и быстродействия / потребления памяти =)
            • 0
              Гена, вопреки стереотипам, пишет на паскале далеко не все, потому что прекрасно знает C++.
              Паскаль же удобен для некоторых видов задач. Например, в нем довольно удобно работать со строками и можно делать массивы, нумерующиеся с отрицательных позиций.
      • 0
        Как раз недавно размышлял об этом…
        По сути, олимпиадное программирование — это вершина, в которой может проявиться паскаль. Алгоритмы+структуры данных, больше и не нужно. А для сетевых приложений, 3d графики есть фреймворки, которые помогают быстро штамповать программы в соответствии с требованиями бизнеса. И нет, это не плохо. Это для многих работа. А несколько дней в году можно посвятить действительно интересному занятию — олимпиадному программированию.
        • 0
          Думая, что несколькими днями тут не обойтись. Просто уметь программировать будет не достаточно! Чтобы достигнуть вершин, то потребуются месяцы тренировок, а то и годы.
        • 0
          В паскале банально много букв. Как следствие — скорость написания и изменения кода меньше. Не выгодно.
          • +1
            + если нельзя использовать среду Delphi например, в Turbo Pascal нет нормальных инструментов отладки. Вернее так, они есть. Но пользоваться ими ужасно неудобно.
    • 0
      Haskell нету. А зря. Там многие олимпиадные штуки делать реально проще. В том числе у него этот ваш BigInt прямо из коробки. Ну и интерактивная разработка добавляет скорости.
  • +2
    Загляденье, как красиво, организаторы старались видать
  • +9
    Может Хабру тоже замутить конкурс такой? Надо побольше хороших дел.
  • +4
    Это действительно было совершенно крутейшее мероприятие. Организаторы просто великолепно поработали, подтверждаю!

    Спасибо за хороший пост, и отдельное — за ссылку на мой хабрапрофиль! Получается, я за третье место теперь кроме приза получаю ещё и плюсики в хабракарму, приятно :-)
    • 0
      Я согласен, Очень крутое мероприятие =) мои листочки помогли?
      • 0
        Ещё как, спасибо!
  • +3
    Помимо прочего, иностранцев не было, так как задачи предлагались только на русском
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    А мне танцор напомнил Пирамидоголового из Silent Hill
  • +2
    Молодцы.
    Жирный плюс в карму @mail.ru
  • НЛО прилетело и опубликовало эту надпись здесь
    • +2
      Зачем делать зарядку, ведь в реальной жизни мы не поднимаем гантели по 20 раз?
      А по сути — это тренировка для мозгов. Да, мозг тоже надо тренировать :)
    • +1
      Видать вы ни разу не участвовали! Как минимум — это весело. Да и кто знает что может встретиться?
      • 0
        Даже в качестве наблюдателя очень весело было! Сам был, все видел и очень понравилось! Даже появилось желание в topcoder-e зарегестрироваться и заняться тренировкой мозгов!
    • 0
      Зачем нужны олимпиадные игры? Как минимум чтобы выявить сильнейших. Не думаю, что алгоритмы типа «Hello, World!» выявят лидеров. Поэтому заведомо «сложные» задачи, помогут выявить результат.
    • +3
      Организуйте конкурс на самого быстрого настройщика сайта на Joomla :)
      • +3
        и конкурс на самого быстрого верстальщика под IE6
    • +3
      Я как-то писал развернутый ответ: http://codeforces.ru/blog/entry/1851.
  • 0
    Зачем делать зарядку, ведь в реальной жизни мы не поднимаем гантели по 20 раз?
    А по сути — это тренировка для мозгов. Да, мозг тоже надо тренировать :)
  • +3
    Петр, конечно, молодец. Поздравляю! Но какие девочки красивые на регистрации!!!
    • +1
      Ради этого «не жалко» потратить все свободное время на учебу, чтоб победить и получить приз от таких красоток))
      • +2
        А можно выйти на улицу и познакомиться с такими красотками
  • +6
    А ещё финалистам вручили по ipad 2 :) После финала всех повезли кататься по Москве реке на яхте, где мы пытались призвать президента, громко крича слово «Инновации», и горланя «Дима, подойди к окошку» когда проплывали мимо кремля. Но, к сожалению, концентрация айпадов была недостаточной, видимо не все взяли их с собой на прогулку.
  • +1
    Вчера я был на мероприятии, одно только посещение которого эквивалентно получению двух высших образований

    Т.е. 10 лет знаний за пару дней получили, крутое мероприятие:)))
    • +1
      Это я шучу, конечно ) но было приятно побывать. Хотя совсем недавно в офисе «Яндекса» был на аналогичной по длительности встрече с министром образования — после встречи было ощущение, что знаний наоборот поубавилось ) Вот она, разница между равнодушным государством и заинтересованным бизнесом.
      • +1
        Тут были и заинтересованный бизнес и заинтересованное сообщество, которое создавалось более 15 лет. Почти все друг друга знали, может быть большинство знакомств было заочным. Хочется подчеркнуть что началось всё не с бизнеса а с энтузиастов из среды образования.
      • 0
        Ну к отношению государтства (имеется в виду СНГ) к образованию пора бы и привыкнуть:) Вроде как не очень то и неожиданно, все стабильно и постоянно:)
  • –2
    Вот всех бы этих умных людей посадить и дать решать реальные задачки… Не люблю уж я абстрактные задачки, извините.
    • +2
      Кхм, а вы думаете эти 50 человек не работают что ли? Ну некоторые ещё студенты, но остальные — ещё как трудоустроены в реальном мире! :-)

      Я вот работаю здесь, попробуйте упрекнуть меня в том, что я занимаюсь ненужной миру абстракцией :-)
      • 0
        Посмотрел сайт. И какой реальный продукт вы сделали? :)
        • +2
          Вам быстро или качественно? :)
          Лаборатория создана в январе, оборудование с нашими <цензура> тендерами до сих пор не пришло (вот как раз сегодня доставили серверный шкаф). Могу ещё долго рассказывать про проблемы и препятствия. Делаем. В процессе.

          Когда выпустим продукт, обязательно напишем на хабре!
          • 0
            Мне — и быстро и качественно :) Утрированно: если сейчас кто-то выпустит очень качественный клон MS-DOS, навряд ли он сможет на этом много заработать.
            Про тендеры и в целом нашу науку знаю не по наслышке, поэтому отношусь к ней негативно. Понимаю, у всех есть проблемы и препятствия, но пока нет конечного продукта, вы занимаетесь «ненужной миру абстракцией» :)
            PS. Ничего личного, просто мое мнение. Надеюсь у вас все получится и сделаете что-то действительно стоящее :)
            • +1
              Чесслово, команда хорошая, и собрались мы не пилить грант, а погружаться в интересную и перспективную науку.

              Наш руководитель Павел Певзнер более чем адекватно ориентируется в текущем state of the art в биоинформатике, поэтому ни о каком MS-DOS под его руководством не может быть и речи!
      • 0
        Я не про то, что люди эти не работают. Я про то, что вместо задачек абстрактных можно было бы дать вполне реальные задачки на соревновании. Хотя кто знает, может они так и делали… Просто есть куча реальных задач, которые можно попытаться так решить и польза была бы вполне реальная.
        • 0
          Например?
          • 0
            Например первое, что пришло в голову из текущих исследований: есть какой-то объем, есть набор пересекающихся примитивов в этом объеме, всякие цилиндры, сферы, призмы, итд итп некоторые примитивы довольно сложные и представляю собой пространство окруженное поверхностями 4 порядка. Надо найти минимальное множество примитивов, которые полностью описывают объем, полученный в результате булевого ИЛИ всех примитивов. Т.е. некоторые примитивы содержат в себе куски других примитивов и таким образом какая-то часть может полностью содержаться внутри финального объема.

            Задачка абстрактная с одной стороны, а с другой чисто практическая:)
    • +1
      а теперь посмотрите на профили финалистов, а также узнайте где они работают(не считая студентов). Я не думаю, что такие компании их держат только за умение решать «абстрактные» задачи.
      • 0
        Я же вроде написал, что я имею в виду не их работу, а само соревнование.
        • 0
          Несмотря на добрые приколы про Petra, за пять часов невозможно написать большой и стоящий конечный продукт. Но алгоритмы, методики решения подобных задач(не с притянутыми за уши легендами в условиях аля «В стране Флатландии… тра-ля-ля») вполне реальны. Чем сложнее проект, тем чаще они используются.
          • 0
            Я не говорю что они должны писать комерческие проекты. Я говорю что они могли бы попробовать решить чтото действительно сложное и реальное. Есть много задач которые просто описать но сложно решить. Не люблю я когда тратят время умных людей на заведомо бесполезные задачи если можно тратить на полезные. Хотя может они так и делают, я не знаю. Но на всяких топкодерсах народ явно сотый и тысячный раз решает известные задачи. Толку то? Точне толк есть в плане развития но почему бы не делать чтоит полезное при этом
  • +1
    Александр Alex_KPR Куприн написал интереснейший отчет о мероприятии: http://codeforces.ru/blog/entry/2695
    • 0
      «Я уверен, что каждый олимпиадник для себя точно решил: «я обязательно приму участие в этом турнире». Однако не могу не выразить обеспокоенность относительно следующих соревнований RCC: увидим ли мы столь качественную организацию и классные подарки в следующем году? Не уменьшится ли количество онсайт-финалистов кубка? На фоне неприятных тенденций международных соревнований TopCoder Open и Google Code Jam хочется надеяться, что такой праздник от Mail.ru Group состоится, и, конечно, не один раз!» — Гришин сказал, что это первая попытка выпечь блин, но они постараются сделать его ежегодным и вроде как бюджеты для следующих мероприятий (и для поодержки некоторых отдельно взятых вузов/кафедр) будут увеличены.

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