Немного разбавим зимние холодные дни теплыми воспоминаниями о том, как в Екатеринбурге проходили: финал RuCTF 2012 (соревнования по защите информации) и финал 38-ого чемпионата мира по программированию «The 2014 ACM ICPC World Finals».
Много фото внутри.
Все фото и текст автора.
Первое мероприятие.
«Virtual IT Robbery Event» или как проходил финал RuCTF 2012
C 19 по 22 апреля 2012 года в УрФУ (г. Екатеринбург) проходил финал всероссийского межвузовского соревнования по защите информации RuCTF 2012.
RuCTF — это всероссийские межвузовские соревнования по защите информации, которые проводятся c 2008 года по принципам игры в CTF: в начале игры команды получают идентичные серверы с предустановленным набором уязвимых сервисов, а задача участников — найти уязвимости, закрыть их у себя и воспользоваться ими для получения приватной информации (флагов) у соперников.
Организаторами RuCTF выступают Институт математики и компьютерных наук Уральского федерального университета имени первого Президента России Б. Н. Ельцина, Региональный учебно-научный центр «Интеллектуальные системы и информационная безопасность», межрегиональная общественная организация «Ассоциация руководителей служб информационной безопасности» и фонд поддержки информационно-коммуникационных технологий.
Соревнования RuCTF 2012 проводились в два этапа.
Отборочный этап (RuCTF 2012 Quals) проходил в сети Интернет с 16 по 18 марта на протяжении 48 часов без перерыва.
Правила отборочного этапа RuCTF 2012 Quals тут.
На отборочном этапе RuCTF 2012 Quals командам предлагалось решить задания (таски), объединенные по тематическим категориям. За успешное решение тасков команды получали баллы. Уровень сложности таска был прямо связан с его стоимостью.
Помимо этого отборочного этапа, команды могли попасть в финал RuCTF 2012, показав отличные результаты на других CTF-соревнованиях.
Сам же финал RuCTF 2012 состоялся с 19 по 22 апреля в городе Екатеринбурге.
Программа финала состояла из нескольких частей:
19.04.2012 – регистрация участников, церемония открытия RuCTF 2012, технические доклады и мастер-классы.
20.04.2012 – круглый стол с организаторами финала, доклад по робототехнике, встреча со спонсорами финала и обсуждение вопросов с жюри.
21.04.2012 – финал RuCTF 2012 (с 9-00 до 20-00).
22.04.2012 – Разбор с жюри заданий и награждение участников.
Большая часть данных для участников была доступна тут – на рассылке RuCTF.
Регистрация на финал RuCTF 2012 и об организации этого мероприятия.
Мероприятие финал RuCTF 2012 проводилось в рамках фестиваля «Весна УПИ в Уральском федеральном», поэтому организаторами были предоставлены для участников такие площадки УрГУ, как:
И места хватило всем, а ведь было много участников, наблюдателей и приглашенных товарищей.
На регистрации каждому участнику команды выдали бейджик, комплект ручек и блокнотов для записей, кружку, футболку и море позитива!
К сожалению, не все команды смогли приехать на мероприятие в полном составе или вообще приехать на него. Но общий состав в итоге команд внушал уважение.
Перечень команд, наблюдателей и состав гостевой команды можно посмотреть тут.
Команды-участники:
Финал проходил в главном учебном корпусе УрФУ:
Но с изюминкой — организаторы предложили новый формат проведение для участников – на паркете, что кардинально поменяло драйв и увеличило интенсивность действия участников команд.
Ранее такие мероприятия проводились в отдельных аудиториях для каждой команды, а теперь большое пространство, за спинами сидят другие команды, отделенные легкими перегородками и все видят друг друга, ощущая накал и пыл борьбы.
Правила проведения финала
Во время игры команды могут:
Во время игры командам запрещается:
API сервисов RuCTF 2012 Final
Реальное расположение оборудование на паркете и схема ЛВС были такие (там видны ниточки-витой пары):
Где маршрутизатор команды — это VMware-образ с предустановленной ОС (со всеми доступными обновлениями). Маршрутизатор был заранее настроен командой разработчиков финала. Команды могут менять его настройки на свой страх и риск.
На одном из ноутбуков, предоставленных команде, был установлен тестовый образ для проверки сети. Он должен быть запущен во время тестирования сети, во время игры его можно будет остановить. Однако, в случае возникновения проблем с сетью, команда должна будет запустить его по просьбе жюри. Тестовый образ и уязвимый образ должны располагаться на одной и той же физической машине.
Начальный комплект аппаратуры, подготовленный организаторами для каждой команды: коммутатор, два ноутбука или десктопа, кому не хватило, патч-корды и сетевой удлинитель.
А как в реальности получилось с размещением на паркете, просто прелесть:
Опасения, что будет «мало места» или «не удобно будет», полностью пропали у всех участников, когда каждая команда развернула свои базы на рабочих местах и приступила к изучению материалов, выданных жюри и прогонке своих тестовых конфигураций оборудования.
Главный и переходящий приз этих соревнований ждал на среднем столе своего нового обладателя:
Ну а еще один сюрприз организаторы подготовили командам такой – общий рабочий образ системы был…. виндовый.
Сколько радостных слов было сказано в адрес жюри, когда каждый участник команды понимал сложность и нетривиальность этого финала, ведь были подготовлены ко всему, кроме такой неожиданности. Тем не менее, кто был больше подготовлен в этой стезе, тот больше получил преимущества и первым сорвал достаточно хорошие очки. Но позже все подтянулись также по этой тематике.
Занятно было смотреть, как у многих участников команд на экранах ноутбуков в поисковых запросах было много вопросов, начинающихся с «как в windows» или т.п.… Но это так – лишь затравка, ибо не образ был главное, а сервисы и правила их предоставления, а также возможность найти в них уязвимости и получить заветные очки за свои правильные действия.
Кратко: команды теперь — это финансовые гиганты, крупные холдинги, которые борются между собой в гонке за обогащением. Флагов больше нет. Теперь все, что у вас есть, — это деньги, и ваша задача — заработать еще больше денег. Любой ценой.
У каждой команды есть сервер с предустановленными сервисами, каждый из которых будет зарабатывать деньги (один из сервисов будет выдавать кредиты, а еще один — принимать вклады). Эти деньги меняются на очки у организаторов, которые и отображаются на табло.
Всего сервисов было пять – Credits, Deposits, MMM, SafeDepositB и Cloud. На каждый заходили боты (их активность и работу контролировало жюри), которые клали деньги или делали операции с этими сервисами у каждой команды. В зависимости от их удовлетворённости и доверия операциями у каждой команде была карма, чем она выше, тем больше и чаще боты будут приходить к ней за услугами.
Командам предстояло набрать больше всех очков путем перевода в них заработанных, украденных (у ботов или других команд) или созданных с помощью дыр в сервисах денег. Причем были ситуации, когда можно было очень серьезно вредить другой команде на уровне сервисов так, что другая команда не догадывалась, что она работает на противника.
В общем, было нетривиально сложно и очень интересно решить эти головоломки каждой команде.
В составе каждой из команд были как и достаточно хорошие программисты, как универсалы, так и быстро обучаемые товарищи, так и специалисты по юникс и виндовс системам. И помогали все друг дружке очень плотно и серьезно, устраивая мозговые штурмы.
О командах подробнее.
Команда [Censored] — Балтийский федеральный университет имени И. Канта, г. Калининград.
Состав: Александр Голубков, Артём Воробьёв, Максим Скуратов, Михаил Юдин, Александр Назаров, Евгений Васильев, Сергей Чесноков, Сергей Валов, Степан Бойченко, капитан — Александр Пузаков.
Очень интересная и дружелюбная команда, которая первой переломила ситуацию в очках на табло и вызвала немалый ажиотаж у остальных участников, а также первая набрала 1 миллион очков в финале.
Команда bitmap — Оренбургский государственный университет, г. Оренбург.
Состав: Кирилл Ляшков, Дмитрий Баранов, Артур Чернов, Алексей Ледовский,
Павел Комиссаров, Владимир Мац, Дарья Герусова, Илья Орлов, Константин Шпинев, капитан — Сергей Волков.
Команда Bushwhackers — Московский государственный университет имени М.В. Ломоносова, г. Москва.
Состав: Виталий Антоненко, Кирилл Самосадный, Александр Раздобаров, Максим Самойлов, Фёдор Сахаров, Георгий Носеевич, Андрей Петухов, Иван Зотов, Карим Валиев, капитан — Евгений Наградов.
Команда HackerMayCry — Уральский федеральный университет, г. Екатеринбург.
Состав: Сергей Краснов, Ирина Бурдова, Лена Петрова, Максим Музафаров, Георгий Кошелев, Павел Блинов, Егор Колмогорцев, капитан — Сергей Азовсков.
Одна из немногих команд, в составе которой были девушки. Очень интересно было за ними наблюдать, как и что делают в процессе выполнения заданий финала.
Команда Koibasta — Самарский государственный аэрокосмичекий университет имени академика С.П. Королёва, г. Самара.
Состав: Артём Солонщиков, Андрей Атапин, Сергей Бобров, Андрей Иванов, Анатолий Кат, Игорь Меркульев, Роман Кивалин, Алексей Гришин, капитан — Михаил Воронов.
Одна из самых спокойных и ушедших в себя на финале команда, сидели немного отделано от остальных (помимо ширмы их еще отделяло панно с планом развития инфраструктуры УрГУ), но были в своих фирменных футболках. Организаторы мероприятия VSFI (соревнование по организации нормального функционирования информационной структуры предприятия) в рамках одного из дней финала RuCTF 2012.
Команда l0rd — Уральский федеральный университет, г. Екатеринбург.
Состав: Александр Сорокин, Андрей Иванов, Иван Комаров, Руслан Нигматуллин, Илья Пацкалев, Дмитрий Косолобов, Павел Климов, Евгений Шмаков, Григорий Назаров, капитан — Михаил Рубинчик.
Команда Leet More — Национальный исследовательский университет информационных технологий, механики и оптики, г. Санкт-Петербург.
Состав: Александр Миноженко, Константин Пилин, Леонид Афанасьев, Григорий Саблин, Вадим Бардаков, Екатерина Бессонова, Иван Тимшин, Игорь Агиевич, Влад Росков, капитан — Алексей Удовенко.
Команда Magic Hat — Самарский государственный технический университет, г. Самара.
Состав: Александр Моханов, Александр Суслов, Евгений Ермаков, Алексей Фонда, Денис Тихонов, Екатерина Фролова, Сергей Ларченко, Артем Писканов, Михаил Токаренко, капитан — Александр Тляпов.
Одна из самых эпатажных команд, некоторые участники свои фирменные шапки не снимали все время, пока шел финал, также были оснащены фирменными шарфиками с названием команды.
Команда PeterPEN — Санкт-Петербургский государственный университет, г. Санкт-Петербург.
Состав: Артур Ханов, Дмитрий Репин, Вадим Евард, Александр Щербаков, Сергей Серебряков, Алексей Малыгин, Павел Свидерский, Сергей Романов, капитан — Антон Овчинников.
Команда SiBears — Томский государственный университет, г. Томск.
Состав: Николай Ткаченко, Дмитрий Алимов, Артем Карпов, Георгий Зайцев, Николай Анисеня, Павел Свиридов, Дмитрий Арбузов, капитан — Дмитрий Стефанцов.
SiBears — обладатели переходящего кубка победителя и победители RuCTF 2011, которым предстояло отстоять титул и кубок в этом финале. Т.е., двойная ответственность и нагрузка у ребят была на плечах.
Команда WildRide — Челябинский государственный университет, г. Челябинск.
Состав: Илья Пехтелев, Дмитрий Шангин, Антон Нургатин, Андрей Григорьев, Михаил Майоров, Илья Маткин, Владимир Горшенин, капитан — Максим Косенко.
Достаточно сильная и амбициозная команда, которая показала высокий уровень и класс своих участников.
Гостевая команда (Guest Team) – участники от других команд, которые смогли приехать на соревнование. У этой команды был большой стол и самый большой состав – 15 человек, в числе который были представители команд SlashDotDash, ufologists, Hack Club, BitOn, Honeypot, GIRAV.
Интересно бы было посмотреть на команду, состоящую только из девушек, но такой не было, зато во многих командах были девушки, которые были очень увлечены игровым заданием.
А вот самая главная команда – это команда оргкомитета и жюри мероприятия в составе: Богдан Мельник, Андрей Хозов, Андрей Гейн, Александр Берсенёв, Константин Плотников, Виктор Самунь, Николай Журавлев, Евгений Крохалев, Илья Зеленчук, Сергей Ионов, Иван Ильин, Александр Цидаев, Дмитрий Корнев, Андрей Малец, Виктор Самунь.
Замечательные и очень упертые ребята, которые с пятницы до утра субботы готовили паркет для команд, а до этого все придумали, написали, проверили и провели на пятерку такое удивительное мероприятие.
А вот еще одна команда, которая в игре непосредственно не принимала участие, но была самой большой (более тридцати человек) и самой заинтересованной в удачном и справедливом проведении финала – это команда наблюдателей:
Участники этой команды болели за своих и за лидеров, делились новостями по твиттеру и соц.сетям, обсуждали происходящие события внимательно и помогали организаторам.
Оборудование
Продолжим знакомство с командами с другой стороны – с технической.
Давно не видел столько много ноутбуков, нетбуков, коммутаторов и периферийных устройств в закрытом ограниченном пространстве. Можно назвать только примерное число – порядка 140-150 штук разных компьютерных девайсов (может даже больше), которые стояли на столах в ряд, по периметру, друг на дружке, на кубиках и т.д.
И каждое устройство не зависимо от размера или названия (кстати, большинство были известных брендов) обретали в умелых руках участников команд завидный функционал для победы, будь то поиск описания в гугле, компиляцию кода или поддержку сервисов для получения заветных победных очков.
Кстати, многие девайсы были с наклейками или гравировками с разных хакерских соревнований.
А обычное рабочее место участника команды выглядело вот так, зато все под рукой:
И только один маленький нетбук скучал на полу на третьем этаже, создавая музыкальный фон всего действа.
Кстати, дружелюбность участников команд и их открытость для общения были просто подспорьем в редком общении за перекусом в угловой части помещения финала (а там был организован целый шведско-печенько-конфетно-чайный стол!) или, когда они были не за терминалом, а у больших экранов, главное не мешать за столом было.
Скорборд, экраны, окончание битвы
Скорборд — таблица с текущими результатами по-русски. А вот что она содержала и какую информацию давала командам и наблюдателям разберем ниже. Данные с базы жюри поступали в приложение, которое обрабатывало текущие значения элементов игры по командам и выдавало на большие ТВ- экраны три слайда с переключение в несколько секунд между каждым слайдом:
Внешний вид скорборда с таблицей очков:
Тут указана позиция команды, количество очков, ее карма, и сервисы, работоспособность которых была в трех категориях – UP (все нормально, работает), MUMBLE (работает, но не стабильно и не штатно), DOWN (не работает).
Участники команд часто пользовались данными именно с экранов больших мониторов, хотя можно было зайти на страничку игры и в браузере смотреть ту же информацию. Но реально было удобно смотреть на стороннем мониторе отображение игрового процесса.
Тем более, можно было поймать взгляд и эмоции участников других команд, попытаться их проанализировать и действовать в более правильном направлении.
Также на скорборде работал чат – можно было послать смс на телефон одного из членов жюри, а он набирал этот текст в видимой области экрана. Но это была такая хулиганская опция больше для наблюдателей.
Под конец соревнований за 30 минут до окончания игрового времени скорборд заморозили и данные о текущих очках и т.п. стали недоступны. А время тикало уже…. Главное было успеть обналичить все деньги и перевести их в очки.
Страсти накалились до предела – максимум сосредоточенности и отдачи. Каждое неверное движение или неправильных выбор действий был бы просто фатален в этот момент. Но многие команды справились, а финальная таблица с итогами оказалась не похожа на замороженную по многим позициям!
Но вот таймер дотикал до нулей и все вздохнули с облегчением, ведь столько сразу тяжести упало с плеч участников. Многие были вымотаны до предела ведь такой сложной игрой с сильными и коварными соперниками.
Организаторы тут тоже подготовили сюрприз – объявление итогов будет только на следующий день – в воскресенье. Вот так – еще одна бессонная ночь для многих то. Но она стоила этого.
Разбор полетов
После трудного и изматывающего финального раунда не все смогли к 11 утра приехать на заключающее мероприятие финала RuCTF 2012, а ведь организаторы приготовили много грамот, подарков, сувениров – ни кто из участников команд не ушел с пустыми руками из зала.
А вот какую награду предстояло получить победителю финала от организаторов уже фестиваля «Весна УПИ в Уральском федеральном».
Но прежде чем начать церемонию награждения, команда жюри финала RuCTF 2012 отчиталась о проделанном работе. Ребята рассказали о том, кто и какие сервисы программировал, и какие дыры или баги в них были изначально реализованы с примерами их активации и использования.
Как оказалось, в каждом из пяти сервисов, с которыми оперировали команды, были специально умышленно оставлены лазейки, найдя которые команды могли преумножать свои деньги (путем выдачи кредитов под отрицательные проценты, например), красть деньги ботов из депозитных ячеек (подобрав пин-коды к этим ячейкам путем перебора этих кодов), вредить другим командам, создавая им помехи в работе сервисов или вообще получить в одном из сервисов админский доступ на изменение его характеристик.
В общем, каждый из сервисов имел от 2 до 5 пасхальных яйца, но команды могли искать другие способы отработать соперников и ботов. И некоторые даже в этом преуспели!
А реагировали они вот так, когда получалось сделать интересный виртуальный финт, например:
Помимо необходимости ломать сервисы, каждая команда могла удвоить свой начальный капитал, путем вскрытия зашифрованного файла из образа, который получала в начале игры. Но тут была промашка небольшая – в жюри забыли активировать вспомогательный сервис, с помощью анализа которого можно было бы выйти на пароль от архива. Так что этот орешек остался не расколот, как и некоторые из первоначальных «дыр» сервисов, догадаться до использования которых не смогла ни одна команда.
В общем, самые внимательные, прозорливые, умеющие писать оригинальные и сложные скрипты и быстро адаптироваться в любой операционной системе с мгновенным пониманием новых для себя языков программирования, как Erlang, владеющие навыками работы в PyCharm и т.д. и т.п. – это лишь толика описательных характеристик каждого участника этого мероприятия.
Подведение итогов и награждение победителей
Вот и подошло время огласить тех, кто смог выстоять под натиском кибератак и набрать больше всех очков по окончанию времени игры.
Итоговая таблица получилась такая:
Первое место — команда [Censored], Балтийский федеральный университет имени И. Канта.
Второе место — команда SiBears, Томский государственный университет.
Третье место — команда WildRide, Челябинский государственный университет.
Таким образом, тройка призеров финала RuCTF 2012 получила свои кубки:
А организаторы развернули целых подарочный магазин!
Ведь все оказалось просто – заработанные очки переконвертировали в настоящие деньги, а на них можно было сразу же не сходя со сцены выбрать нужные каждому участнику команды подарки! На каждом подарке был свой ценник.
Раскладывание подарков:
И каждая команда по очереди (начиная с первого места) подходила к этой мега куча девайсов и выбирала себе необходимые гаджеты.
Если у команды [Censored] был большой выбор, то у SiBears было поменьше вариантов подарков:
А команде WildRide осталось совсем немного в выборном ассортименте.
Но в итоге все были довольны!
И под финал финала свершился переход главного приза RuCTF от команды победительницы RuCTF 2011 к новому победителю и обладателю этого трофея!
Далее были поздравления и теплые слова от всех капитанов команд и конечно же обещание следующий финал провести еще интереснее и сложнее!
Приятно, когда проходят такие соревнования, ведь видишь, сколько реально упертых, собранных и широкоформатных личностей командно борются за обладание звание самой продвинутой, подкованной и удачливой командой RuCTF 2012 года.
А то, что организаторы создали на мероприятии такую теплую, уютную атмосферу – это вообще выше всех похвал.
Если Вы хотите посмотреть более расширенный комплект фотоматериалов автора по этому мероприятию, то они находятся тут.
RuCTF — это всероссийские межвузовские соревнования по защите информации, которые проводятся c 2008 года по принципам игры в CTF: в начале игры команды получают идентичные серверы с предустановленным набором уязвимых сервисов, а задача участников — найти уязвимости, закрыть их у себя и воспользоваться ими для получения приватной информации (флагов) у соперников.
Организаторами RuCTF выступают Институт математики и компьютерных наук Уральского федерального университета имени первого Президента России Б. Н. Ельцина, Региональный учебно-научный центр «Интеллектуальные системы и информационная безопасность», межрегиональная общественная организация «Ассоциация руководителей служб информационной безопасности» и фонд поддержки информационно-коммуникационных технологий.
Соревнования RuCTF 2012 проводились в два этапа.
Отборочный этап (RuCTF 2012 Quals) проходил в сети Интернет с 16 по 18 марта на протяжении 48 часов без перерыва.
Правила отборочного этапа RuCTF 2012 Quals тут.
На отборочном этапе RuCTF 2012 Quals командам предлагалось решить задания (таски), объединенные по тематическим категориям. За успешное решение тасков команды получали баллы. Уровень сложности таска был прямо связан с его стоимостью.
Помимо этого отборочного этапа, команды могли попасть в финал RuCTF 2012, показав отличные результаты на других CTF-соревнованиях.
Сам же финал RuCTF 2012 состоялся с 19 по 22 апреля в городе Екатеринбурге.
Программа финала состояла из нескольких частей:
19.04.2012 – регистрация участников, церемония открытия RuCTF 2012, технические доклады и мастер-классы.
20.04.2012 – круглый стол с организаторами финала, доклад по робототехнике, встреча со спонсорами финала и обсуждение вопросов с жюри.
21.04.2012 – финал RuCTF 2012 (с 9-00 до 20-00).
22.04.2012 – Разбор с жюри заданий и награждение участников.
Большая часть данных для участников была доступна тут – на рассылке RuCTF.
Регистрация на финал RuCTF 2012 и об организации этого мероприятия.
Мероприятие финал RuCTF 2012 проводилось в рамках фестиваля «Весна УПИ в Уральском федеральном», поэтому организаторами были предоставлены для участников такие площадки УрГУ, как:
- Актовый зал УрГУ (ул. Ленина, 51, 3 этаж)
- Конференц зал, УрГУ, ул. Тургенева, 4, 3 этаж
- Ауд. 611, УрГУ, ул. Тургенева, 4, 6 этаж
- Паркет, второй этаж главного учебного корпуса УрГУ, ул. Мира 19.
И места хватило всем, а ведь было много участников, наблюдателей и приглашенных товарищей.
На регистрации каждому участнику команды выдали бейджик, комплект ручек и блокнотов для записей, кружку, футболку и море позитива!
К сожалению, не все команды смогли приехать на мероприятие в полном составе или вообще приехать на него. Но общий состав в итоге команд внушал уважение.
Перечень команд, наблюдателей и состав гостевой команды можно посмотреть тут.
Команды-участники:
- Bushwhackers Московский государственный университет имени М.В. Ломоносова;
- bitmap Оренбургский государственный университет;
- [Censored] Балтийский федеральный университет имени И. Канта ;
- Leet More Национальный исследовательский университет информационных технологий, механики и оптики;
- PeterPEN Санкт-Петербургский государственный университет;
- SiBears Томский государственный университет;
- WildRide Челябинский государственный университет;
- HackerMayCry Уральский федеральный университет;
- l0rd Уральский федеральный университет;
- Koibasta Самарский государственный аэрокосмический университет имени академика С.П. Королёва;
- Magic Hat Самарский государственный технический университет.
Финал проходил в главном учебном корпусе УрФУ:
Но с изюминкой — организаторы предложили новый формат проведение для участников – на паркете, что кардинально поменяло драйв и увеличило интенсивность действия участников команд.
Ранее такие мероприятия проводились в отдельных аудиториях для каждой команды, а теперь большое пространство, за спинами сидят другие команды, отделенные легкими перегородками и все видят друг друга, ощущая накал и пыл борьбы.
Правила проведения финала
Во время игры команды могут:
- использовать любое количество компьютеров и сетевого оборудования не выше второго уровня стека ISO OSI;
- вносить любые изменения в предоставленные им серверы, если это прямо не запрещено жюри;
- менять топологию своего сегмента сети.
Во время игры командам запрещается:
- проводить атаки на компьютеры жюри;
- осуществлять фильтрацию трафика команд-соперниц от трафика жюри (например, по ip-адресам);
- генерировать неоправданно большой объем трафика (флуд);
- проводить деструктивные атаки на серверы команд-соперниц (например, rm –rf /);
- осуществлять указанные выше действия от имени команд-соперниц.
Легенда финала RuCTF 2012
RuCTF 2012. Легенда финала
Текст для команд, 14 апреля 2012
Современный мир — это мир денег. Деньги пропитывают все сферы жизни общества. Каждый человек думает о деньгах, ежедневно, ежечасно. Каждый человек может в мгновение обогатиться, а может переступить грань нищеты. Деньги повсюду — мы покупаем еду для выживания, мы берем кредиты для удовлетворения прихотей, мы делаем вклады в надежде сохранить возможности.
Деньги стали настолько естественны, что никто уже не понимает, что это такое — деньги. Но все же в мире есть те, кто разбирается в деньгах лучше других. Они знают, как заработать и преумножить состояние, они непринужденно совершают многомиллионные сделки, они не замечают многомиллионных убытков. Это корпорации. За день они зарабатывают столько денег, сколько обычный человек зарабатывает за всю жизнь. Временами кажется, что они просто играют с деньгами.
В этом году с деньгами будем играть мы. Команды теперь — это финансовые гиганты, крупные холдинги, которые борются между собой в гонке за обогащением. Флагов больше нет. Теперь все, что у вас есть, — это деньги, и ваша задача — заработать еще больше денег. Любой ценой.
Но не переживайте, RuCTF — это все-таки соревнование по компьютерной безопасности, и у каждой команды будет привычный сервер с предустановленными сервисами, каждый из которых будет зарабатывать деньги. Например, один из сервисов будет выдавать кредиты, а еще один — принимать вклады. Под проценты, и на определенный срок — все по-настоящему. Эти два сервиса позволят командам оставаться на плаву, даже если они потеряют абсолютно все деньги — к ним будут регулярно приходить клиенты, оставлять вклады и брать кредиты.
Очки
Мир денег шаток. Сегодня вы можете быть рублевым миллионером, а завтра случится дефолт. В мире денег нужна твердая валюта, и этой валютой являются очки организаторов. Никого не волнует, сколько миллионов рупий лежит у вас в сейфе или в карманах. Чтобы подняться в глазах соперников, вы должны обменивать ваши деньги на очки. Вы можете делать это в любой момент, но помните, что курсы обмена не стоят на месте. Вы вольны выбирать, что лучше — поменять сейчас тугрики, через 5 минут йентики или, быть может, через 20 минут фантики.
Деньги
С технической точки зрения деньги, участвующие в игре, — это набор купюр, выпущенных ЦентроБанком. Каждая купюра представляется текстовой строкой в формате CSV и выглядит примерно так:
82154800-8337-11E1-8736-16514824019B,1000,TUG,10,2012-04-21T11:00:00,AD87...BOI==,Money-money
Купюра состоит из следующих полей:
1. уникальный идентификатор купюры (UUID);
2. достоинство купюры (в данном случае 1000);
3. валюта (в данном случае «тугрики»);
4. уникальный идентификатор владельца купюры (натуральное число);
5. дата и время создания купюры в sortable-формате;
6. Base64 от электронной подписи, сделанной с помощью закрытого ключа ЦентроБанка;
7. опциональный комментарий, не влияющий на значение подписи.
По любой купюре можно легко проверить, является ли она настоящей — открытый ключ ЦентроБанка будет доступен всем участникам.
Транзакции
Транзакции денег, вне зависимости от того, какие стороны в ней участвуют, проводятся через ЦентроБанк, принадлежащий организаторам. Перед проведением транзакции одна из сторон инициирует передачу денег, обращаясь ко второй стороне. Они договариваются о сумме, валюте и идентификаторе транзакции.
После этого обе стороны обращаются по протоколу HTTP к API ЦентроБанка для того, чтобы он произвел транзакцию. ЦентроБанк накладывает ограничение на разницу во времени между подключениями сторон — если один из участников замешкается, транзакция может не состояться.
После подключения передающая сторона в теле POST-запроса построчно передает купюры. ЦентроБанк выбирает из них все действующие, проверяет, что они все нужной валюты, сортирует их по возрастанию номинала и берет по одной купюре с начала до тех пор, пока не набирает сумму, достаточную для проведения транзакции. Размен купюр и выдача сдачи не производится, однако, все неиспользованные действующие купюры будут возвращены отправителю в теле ответа в случае успешного проведения транзакции.
Технически, при проведении транзакции ЦентроБанк отзывает старые купюры отправителя, а получателю выдает новые. Команды смогут проверить, отозвана ли купюра, с помощью специального сервиса организаторов.
Хранилище
Сердцем инфраструктуры каждой команды является сервис Хранилище, который держит в безопасности все деньги, принадлежащие команде. Все остальные сервисы команды получают и складывают деньги именно в Хранилище. Хранилище, кроме того, что принимает, хранит и выдает купюры, имеет и своеобразное представление об экономии — если сервис начинает просить слишком много денег за слишком короткий промежуток времени, и при этом слишком мало денег помещает обратно — велика вероятность, что Хранилищу это не понравится, и денег оно не даст.
Подпись
Другой вспомогательный сервис — сервис Подпись. Он умеет принимать на вход данные и подписывать их закрытым ключом вашей команды. Подпись используется для проверки подлинности запросов, сделанных сервисами команды.
Взаимодействие команд
Как всегда, вы можете взаимодействовать с другими командами в рамках правил. Например, вы можете взять кредит у более богатого конкурента, или сделать вклад в банк другой команды. При этом мы, конечно, не можем гарантировать, что сервис другой команды обойдется с вами честно. Точно так же и вы можете пытаться обмануть чужие сервисы. Кроме одного случая.
Кредиты
Во избежание кредитных махинаций организаторы вынуждены контролировать процессы выдачи кредитов. Поэтому все транзакции, связанные с кредитами, совершаются не просто через ЦентроБанк, а через специальное Доверенное Лицо. За исключением некоторых деталей этот сервис работает идентично ЦентроБанку. В частности, перед взятием кредита, клиент и сервис должны договориться об идентификаторе транзакции.
Сторона, взявшая кредит, может в любое время вплоть до истечения срока прийти к Доверенному Лицу и вернуть деньги по кредиту. Заметим, что для этого заемщик должен помнить идентификатор транзакции, в рамках которой была совершена сделка по получению кредита.
После наступления срока возврата кредита, выдавшая его сторона имеет право прийти к Доверенному Лицу и потребовать свой кредит с процентами обратно. Вне зависимости от того, вернул ли к этому моменту заемщик деньги, Доверенное Лицо отдает кредитору деньги, то есть оно реализует систему страхования кредитов.
Казалось бы, можно брать кредиты и не возвращать — прямой путь к богатству. Но у каждой команды существует Карма.
Карма
Карма отражает уровень доверия клиентов к холдингу. Если команда не обижает своих клиентов, её карма постепенно растет до максимума. Однако, когда команда ведет себя нехорошо, ее карма начинает падать. Это может происходить в следующих случаях:
Чем ниже у команды карма, тем реже к ней будут обращаться клиенты, и тем меньше денег будет проходить через ее сервисы.
Резюме
Текст для команд, 14 апреля 2012
Современный мир — это мир денег. Деньги пропитывают все сферы жизни общества. Каждый человек думает о деньгах, ежедневно, ежечасно. Каждый человек может в мгновение обогатиться, а может переступить грань нищеты. Деньги повсюду — мы покупаем еду для выживания, мы берем кредиты для удовлетворения прихотей, мы делаем вклады в надежде сохранить возможности.
Деньги стали настолько естественны, что никто уже не понимает, что это такое — деньги. Но все же в мире есть те, кто разбирается в деньгах лучше других. Они знают, как заработать и преумножить состояние, они непринужденно совершают многомиллионные сделки, они не замечают многомиллионных убытков. Это корпорации. За день они зарабатывают столько денег, сколько обычный человек зарабатывает за всю жизнь. Временами кажется, что они просто играют с деньгами.
В этом году с деньгами будем играть мы. Команды теперь — это финансовые гиганты, крупные холдинги, которые борются между собой в гонке за обогащением. Флагов больше нет. Теперь все, что у вас есть, — это деньги, и ваша задача — заработать еще больше денег. Любой ценой.
Но не переживайте, RuCTF — это все-таки соревнование по компьютерной безопасности, и у каждой команды будет привычный сервер с предустановленными сервисами, каждый из которых будет зарабатывать деньги. Например, один из сервисов будет выдавать кредиты, а еще один — принимать вклады. Под проценты, и на определенный срок — все по-настоящему. Эти два сервиса позволят командам оставаться на плаву, даже если они потеряют абсолютно все деньги — к ним будут регулярно приходить клиенты, оставлять вклады и брать кредиты.
Очки
Мир денег шаток. Сегодня вы можете быть рублевым миллионером, а завтра случится дефолт. В мире денег нужна твердая валюта, и этой валютой являются очки организаторов. Никого не волнует, сколько миллионов рупий лежит у вас в сейфе или в карманах. Чтобы подняться в глазах соперников, вы должны обменивать ваши деньги на очки. Вы можете делать это в любой момент, но помните, что курсы обмена не стоят на месте. Вы вольны выбирать, что лучше — поменять сейчас тугрики, через 5 минут йентики или, быть может, через 20 минут фантики.
Деньги
С технической точки зрения деньги, участвующие в игре, — это набор купюр, выпущенных ЦентроБанком. Каждая купюра представляется текстовой строкой в формате CSV и выглядит примерно так:
82154800-8337-11E1-8736-16514824019B,1000,TUG,10,2012-04-21T11:00:00,AD87...BOI==,Money-money
Купюра состоит из следующих полей:
1. уникальный идентификатор купюры (UUID);
2. достоинство купюры (в данном случае 1000);
3. валюта (в данном случае «тугрики»);
4. уникальный идентификатор владельца купюры (натуральное число);
5. дата и время создания купюры в sortable-формате;
6. Base64 от электронной подписи, сделанной с помощью закрытого ключа ЦентроБанка;
7. опциональный комментарий, не влияющий на значение подписи.
По любой купюре можно легко проверить, является ли она настоящей — открытый ключ ЦентроБанка будет доступен всем участникам.
Транзакции
Транзакции денег, вне зависимости от того, какие стороны в ней участвуют, проводятся через ЦентроБанк, принадлежащий организаторам. Перед проведением транзакции одна из сторон инициирует передачу денег, обращаясь ко второй стороне. Они договариваются о сумме, валюте и идентификаторе транзакции.
После этого обе стороны обращаются по протоколу HTTP к API ЦентроБанка для того, чтобы он произвел транзакцию. ЦентроБанк накладывает ограничение на разницу во времени между подключениями сторон — если один из участников замешкается, транзакция может не состояться.
После подключения передающая сторона в теле POST-запроса построчно передает купюры. ЦентроБанк выбирает из них все действующие, проверяет, что они все нужной валюты, сортирует их по возрастанию номинала и берет по одной купюре с начала до тех пор, пока не набирает сумму, достаточную для проведения транзакции. Размен купюр и выдача сдачи не производится, однако, все неиспользованные действующие купюры будут возвращены отправителю в теле ответа в случае успешного проведения транзакции.
Технически, при проведении транзакции ЦентроБанк отзывает старые купюры отправителя, а получателю выдает новые. Команды смогут проверить, отозвана ли купюра, с помощью специального сервиса организаторов.
Хранилище
Сердцем инфраструктуры каждой команды является сервис Хранилище, который держит в безопасности все деньги, принадлежащие команде. Все остальные сервисы команды получают и складывают деньги именно в Хранилище. Хранилище, кроме того, что принимает, хранит и выдает купюры, имеет и своеобразное представление об экономии — если сервис начинает просить слишком много денег за слишком короткий промежуток времени, и при этом слишком мало денег помещает обратно — велика вероятность, что Хранилищу это не понравится, и денег оно не даст.
Подпись
Другой вспомогательный сервис — сервис Подпись. Он умеет принимать на вход данные и подписывать их закрытым ключом вашей команды. Подпись используется для проверки подлинности запросов, сделанных сервисами команды.
Взаимодействие команд
Как всегда, вы можете взаимодействовать с другими командами в рамках правил. Например, вы можете взять кредит у более богатого конкурента, или сделать вклад в банк другой команды. При этом мы, конечно, не можем гарантировать, что сервис другой команды обойдется с вами честно. Точно так же и вы можете пытаться обмануть чужие сервисы. Кроме одного случая.
Кредиты
Во избежание кредитных махинаций организаторы вынуждены контролировать процессы выдачи кредитов. Поэтому все транзакции, связанные с кредитами, совершаются не просто через ЦентроБанк, а через специальное Доверенное Лицо. За исключением некоторых деталей этот сервис работает идентично ЦентроБанку. В частности, перед взятием кредита, клиент и сервис должны договориться об идентификаторе транзакции.
Сторона, взявшая кредит, может в любое время вплоть до истечения срока прийти к Доверенному Лицу и вернуть деньги по кредиту. Заметим, что для этого заемщик должен помнить идентификатор транзакции, в рамках которой была совершена сделка по получению кредита.
После наступления срока возврата кредита, выдавшая его сторона имеет право прийти к Доверенному Лицу и потребовать свой кредит с процентами обратно. Вне зависимости от того, вернул ли к этому моменту заемщик деньги, Доверенное Лицо отдает кредитору деньги, то есть оно реализует систему страхования кредитов.
Казалось бы, можно брать кредиты и не возвращать — прямой путь к богатству. Но у каждой команды существует Карма.
Карма
Карма отражает уровень доверия клиентов к холдингу. Если команда не обижает своих клиентов, её карма постепенно растет до максимума. Однако, когда команда ведет себя нехорошо, ее карма начинает падать. Это может происходить в следующих случаях:
- К сервису пришел клиент, но не смог получить услугу. Возможно, сервис вообще не был доступен.
- Сервис команды поступил с клиентом нечестно. Например, принял вклад, но не захотел возвращать его с процентами через нужное время.
- Команда взяла кредит у другой команды, однако, не вернула его в срок.
Чем ниже у команды карма, тем реже к ней будут обращаться клиенты, и тем меньше денег будет проходить через ее сервисы.
Резюме
- На протяжении всей игры команды оперируют деньгами. Они могут зарабатывать их легальным способом, а также красть у других команд.
- В любой момент времени команды могут поменять известные им купюры на очки по текущему курсу, при этом обратный обмен не возможен. Оставшиеся на конец игры деньги сгорают.
- Деньги хранятся централизованно и могут свободно циркулировать между сервисами команды, однако, доступ к большой сумме разом ни из какого сервиса получить нельзя.
- За неработоспособность или мошенничество сервисов команды штрафуются падением их кармы. Чем меньше у команды карма — тем меньше денег проходит через ее сервисы.
- Никаких адвайзори. Нельзя терять концентрацию, ведь цель — зарабатывать деньги.
API сервисов RuCTF 2012 Final
Реальное расположение оборудование на паркете и схема ЛВС были такие (там видны ниточки-витой пары):
Где маршрутизатор команды — это VMware-образ с предустановленной ОС (со всеми доступными обновлениями). Маршрутизатор был заранее настроен командой разработчиков финала. Команды могут менять его настройки на свой страх и риск.
На одном из ноутбуков, предоставленных команде, был установлен тестовый образ для проверки сети. Он должен быть запущен во время тестирования сети, во время игры его можно будет остановить. Однако, в случае возникновения проблем с сетью, команда должна будет запустить его по просьбе жюри. Тестовый образ и уязвимый образ должны располагаться на одной и той же физической машине.
Начальный комплект аппаратуры, подготовленный организаторами для каждой команды: коммутатор, два ноутбука или десктопа, кому не хватило, патч-корды и сетевой удлинитель.
А как в реальности получилось с размещением на паркете, просто прелесть:
Опасения, что будет «мало места» или «не удобно будет», полностью пропали у всех участников, когда каждая команда развернула свои базы на рабочих местах и приступила к изучению материалов, выданных жюри и прогонке своих тестовых конфигураций оборудования.
Главный и переходящий приз этих соревнований ждал на среднем столе своего нового обладателя:
Ну а еще один сюрприз организаторы подготовили командам такой – общий рабочий образ системы был…. виндовый.
Сколько радостных слов было сказано в адрес жюри, когда каждый участник команды понимал сложность и нетривиальность этого финала, ведь были подготовлены ко всему, кроме такой неожиданности. Тем не менее, кто был больше подготовлен в этой стезе, тот больше получил преимущества и первым сорвал достаточно хорошие очки. Но позже все подтянулись также по этой тематике.
Занятно было смотреть, как у многих участников команд на экранах ноутбуков в поисковых запросах было много вопросов, начинающихся с «как в windows» или т.п.… Но это так – лишь затравка, ибо не образ был главное, а сервисы и правила их предоставления, а также возможность найти в них уязвимости и получить заветные очки за свои правильные действия.
Кратко: команды теперь — это финансовые гиганты, крупные холдинги, которые борются между собой в гонке за обогащением. Флагов больше нет. Теперь все, что у вас есть, — это деньги, и ваша задача — заработать еще больше денег. Любой ценой.
У каждой команды есть сервер с предустановленными сервисами, каждый из которых будет зарабатывать деньги (один из сервисов будет выдавать кредиты, а еще один — принимать вклады). Эти деньги меняются на очки у организаторов, которые и отображаются на табло.
Всего сервисов было пять – Credits, Deposits, MMM, SafeDepositB и Cloud. На каждый заходили боты (их активность и работу контролировало жюри), которые клали деньги или делали операции с этими сервисами у каждой команды. В зависимости от их удовлетворённости и доверия операциями у каждой команде была карма, чем она выше, тем больше и чаще боты будут приходить к ней за услугами.
Командам предстояло набрать больше всех очков путем перевода в них заработанных, украденных (у ботов или других команд) или созданных с помощью дыр в сервисах денег. Причем были ситуации, когда можно было очень серьезно вредить другой команде на уровне сервисов так, что другая команда не догадывалась, что она работает на противника.
В общем, было нетривиально сложно и очень интересно решить эти головоломки каждой команде.
В составе каждой из команд были как и достаточно хорошие программисты, как универсалы, так и быстро обучаемые товарищи, так и специалисты по юникс и виндовс системам. И помогали все друг дружке очень плотно и серьезно, устраивая мозговые штурмы.
О командах подробнее.
Команда [Censored] — Балтийский федеральный университет имени И. Канта, г. Калининград.
Состав: Александр Голубков, Артём Воробьёв, Максим Скуратов, Михаил Юдин, Александр Назаров, Евгений Васильев, Сергей Чесноков, Сергей Валов, Степан Бойченко, капитан — Александр Пузаков.
Очень интересная и дружелюбная команда, которая первой переломила ситуацию в очках на табло и вызвала немалый ажиотаж у остальных участников, а также первая набрала 1 миллион очков в финале.
Команда bitmap — Оренбургский государственный университет, г. Оренбург.
Состав: Кирилл Ляшков, Дмитрий Баранов, Артур Чернов, Алексей Ледовский,
Павел Комиссаров, Владимир Мац, Дарья Герусова, Илья Орлов, Константин Шпинев, капитан — Сергей Волков.
Команда Bushwhackers — Московский государственный университет имени М.В. Ломоносова, г. Москва.
Состав: Виталий Антоненко, Кирилл Самосадный, Александр Раздобаров, Максим Самойлов, Фёдор Сахаров, Георгий Носеевич, Андрей Петухов, Иван Зотов, Карим Валиев, капитан — Евгений Наградов.
Команда HackerMayCry — Уральский федеральный университет, г. Екатеринбург.
Состав: Сергей Краснов, Ирина Бурдова, Лена Петрова, Максим Музафаров, Георгий Кошелев, Павел Блинов, Егор Колмогорцев, капитан — Сергей Азовсков.
Одна из немногих команд, в составе которой были девушки. Очень интересно было за ними наблюдать, как и что делают в процессе выполнения заданий финала.
Команда Koibasta — Самарский государственный аэрокосмичекий университет имени академика С.П. Королёва, г. Самара.
Состав: Артём Солонщиков, Андрей Атапин, Сергей Бобров, Андрей Иванов, Анатолий Кат, Игорь Меркульев, Роман Кивалин, Алексей Гришин, капитан — Михаил Воронов.
Одна из самых спокойных и ушедших в себя на финале команда, сидели немного отделано от остальных (помимо ширмы их еще отделяло панно с планом развития инфраструктуры УрГУ), но были в своих фирменных футболках. Организаторы мероприятия VSFI (соревнование по организации нормального функционирования информационной структуры предприятия) в рамках одного из дней финала RuCTF 2012.
Команда l0rd — Уральский федеральный университет, г. Екатеринбург.
Состав: Александр Сорокин, Андрей Иванов, Иван Комаров, Руслан Нигматуллин, Илья Пацкалев, Дмитрий Косолобов, Павел Климов, Евгений Шмаков, Григорий Назаров, капитан — Михаил Рубинчик.
Команда Leet More — Национальный исследовательский университет информационных технологий, механики и оптики, г. Санкт-Петербург.
Состав: Александр Миноженко, Константин Пилин, Леонид Афанасьев, Григорий Саблин, Вадим Бардаков, Екатерина Бессонова, Иван Тимшин, Игорь Агиевич, Влад Росков, капитан — Алексей Удовенко.
Команда Magic Hat — Самарский государственный технический университет, г. Самара.
Состав: Александр Моханов, Александр Суслов, Евгений Ермаков, Алексей Фонда, Денис Тихонов, Екатерина Фролова, Сергей Ларченко, Артем Писканов, Михаил Токаренко, капитан — Александр Тляпов.
Одна из самых эпатажных команд, некоторые участники свои фирменные шапки не снимали все время, пока шел финал, также были оснащены фирменными шарфиками с названием команды.
Команда PeterPEN — Санкт-Петербургский государственный университет, г. Санкт-Петербург.
Состав: Артур Ханов, Дмитрий Репин, Вадим Евард, Александр Щербаков, Сергей Серебряков, Алексей Малыгин, Павел Свидерский, Сергей Романов, капитан — Антон Овчинников.
Команда SiBears — Томский государственный университет, г. Томск.
Состав: Николай Ткаченко, Дмитрий Алимов, Артем Карпов, Георгий Зайцев, Николай Анисеня, Павел Свиридов, Дмитрий Арбузов, капитан — Дмитрий Стефанцов.
SiBears — обладатели переходящего кубка победителя и победители RuCTF 2011, которым предстояло отстоять титул и кубок в этом финале. Т.е., двойная ответственность и нагрузка у ребят была на плечах.
Команда WildRide — Челябинский государственный университет, г. Челябинск.
Состав: Илья Пехтелев, Дмитрий Шангин, Антон Нургатин, Андрей Григорьев, Михаил Майоров, Илья Маткин, Владимир Горшенин, капитан — Максим Косенко.
Достаточно сильная и амбициозная команда, которая показала высокий уровень и класс своих участников.
Гостевая команда (Guest Team) – участники от других команд, которые смогли приехать на соревнование. У этой команды был большой стол и самый большой состав – 15 человек, в числе который были представители команд SlashDotDash, ufologists, Hack Club, BitOn, Honeypot, GIRAV.
Интересно бы было посмотреть на команду, состоящую только из девушек, но такой не было, зато во многих командах были девушки, которые были очень увлечены игровым заданием.
А вот самая главная команда – это команда оргкомитета и жюри мероприятия в составе: Богдан Мельник, Андрей Хозов, Андрей Гейн, Александр Берсенёв, Константин Плотников, Виктор Самунь, Николай Журавлев, Евгений Крохалев, Илья Зеленчук, Сергей Ионов, Иван Ильин, Александр Цидаев, Дмитрий Корнев, Андрей Малец, Виктор Самунь.
Замечательные и очень упертые ребята, которые с пятницы до утра субботы готовили паркет для команд, а до этого все придумали, написали, проверили и провели на пятерку такое удивительное мероприятие.
А вот еще одна команда, которая в игре непосредственно не принимала участие, но была самой большой (более тридцати человек) и самой заинтересованной в удачном и справедливом проведении финала – это команда наблюдателей:
Участники этой команды болели за своих и за лидеров, делились новостями по твиттеру и соц.сетям, обсуждали происходящие события внимательно и помогали организаторам.
Оборудование
Продолжим знакомство с командами с другой стороны – с технической.
Давно не видел столько много ноутбуков, нетбуков, коммутаторов и периферийных устройств в закрытом ограниченном пространстве. Можно назвать только примерное число – порядка 140-150 штук разных компьютерных девайсов (может даже больше), которые стояли на столах в ряд, по периметру, друг на дружке, на кубиках и т.д.
И каждое устройство не зависимо от размера или названия (кстати, большинство были известных брендов) обретали в умелых руках участников команд завидный функционал для победы, будь то поиск описания в гугле, компиляцию кода или поддержку сервисов для получения заветных победных очков.
Кстати, многие девайсы были с наклейками или гравировками с разных хакерских соревнований.
А обычное рабочее место участника команды выглядело вот так, зато все под рукой:
И только один маленький нетбук скучал на полу на третьем этаже, создавая музыкальный фон всего действа.
Кстати, дружелюбность участников команд и их открытость для общения были просто подспорьем в редком общении за перекусом в угловой части помещения финала (а там был организован целый шведско-печенько-конфетно-чайный стол!) или, когда они были не за терминалом, а у больших экранов, главное не мешать за столом было.
Скорборд, экраны, окончание битвы
Скорборд — таблица с текущими результатами по-русски. А вот что она содержала и какую информацию давала командам и наблюдателям разберем ниже. Данные с базы жюри поступали в приложение, которое обрабатывало текущие значения элементов игры по командам и выдавало на большие ТВ- экраны три слайда с переключение в несколько секунд между каждым слайдом:
- в виде графика курс валют (доллар, рубль и евро) – чем больше воруют одну валюту, тем меньше был ее курс;
- таблицу очков, кармы и работоспособности сервисов каждой команды;
- общее игровое время.
Внешний вид скорборда с таблицей очков:
Тут указана позиция команды, количество очков, ее карма, и сервисы, работоспособность которых была в трех категориях – UP (все нормально, работает), MUMBLE (работает, но не стабильно и не штатно), DOWN (не работает).
Участники команд часто пользовались данными именно с экранов больших мониторов, хотя можно было зайти на страничку игры и в браузере смотреть ту же информацию. Но реально было удобно смотреть на стороннем мониторе отображение игрового процесса.
Тем более, можно было поймать взгляд и эмоции участников других команд, попытаться их проанализировать и действовать в более правильном направлении.
Также на скорборде работал чат – можно было послать смс на телефон одного из членов жюри, а он набирал этот текст в видимой области экрана. Но это была такая хулиганская опция больше для наблюдателей.
Под конец соревнований за 30 минут до окончания игрового времени скорборд заморозили и данные о текущих очках и т.п. стали недоступны. А время тикало уже…. Главное было успеть обналичить все деньги и перевести их в очки.
Страсти накалились до предела – максимум сосредоточенности и отдачи. Каждое неверное движение или неправильных выбор действий был бы просто фатален в этот момент. Но многие команды справились, а финальная таблица с итогами оказалась не похожа на замороженную по многим позициям!
Но вот таймер дотикал до нулей и все вздохнули с облегчением, ведь столько сразу тяжести упало с плеч участников. Многие были вымотаны до предела ведь такой сложной игрой с сильными и коварными соперниками.
Организаторы тут тоже подготовили сюрприз – объявление итогов будет только на следующий день – в воскресенье. Вот так – еще одна бессонная ночь для многих то. Но она стоила этого.
Разбор полетов
После трудного и изматывающего финального раунда не все смогли к 11 утра приехать на заключающее мероприятие финала RuCTF 2012, а ведь организаторы приготовили много грамот, подарков, сувениров – ни кто из участников команд не ушел с пустыми руками из зала.
А вот какую награду предстояло получить победителю финала от организаторов уже фестиваля «Весна УПИ в Уральском федеральном».
Но прежде чем начать церемонию награждения, команда жюри финала RuCTF 2012 отчиталась о проделанном работе. Ребята рассказали о том, кто и какие сервисы программировал, и какие дыры или баги в них были изначально реализованы с примерами их активации и использования.
Как оказалось, в каждом из пяти сервисов, с которыми оперировали команды, были специально умышленно оставлены лазейки, найдя которые команды могли преумножать свои деньги (путем выдачи кредитов под отрицательные проценты, например), красть деньги ботов из депозитных ячеек (подобрав пин-коды к этим ячейкам путем перебора этих кодов), вредить другим командам, создавая им помехи в работе сервисов или вообще получить в одном из сервисов админский доступ на изменение его характеристик.
В общем, каждый из сервисов имел от 2 до 5 пасхальных яйца, но команды могли искать другие способы отработать соперников и ботов. И некоторые даже в этом преуспели!
А реагировали они вот так, когда получалось сделать интересный виртуальный финт, например:
Помимо необходимости ломать сервисы, каждая команда могла удвоить свой начальный капитал, путем вскрытия зашифрованного файла из образа, который получала в начале игры. Но тут была промашка небольшая – в жюри забыли активировать вспомогательный сервис, с помощью анализа которого можно было бы выйти на пароль от архива. Так что этот орешек остался не расколот, как и некоторые из первоначальных «дыр» сервисов, догадаться до использования которых не смогла ни одна команда.
В общем, самые внимательные, прозорливые, умеющие писать оригинальные и сложные скрипты и быстро адаптироваться в любой операционной системе с мгновенным пониманием новых для себя языков программирования, как Erlang, владеющие навыками работы в PyCharm и т.д. и т.п. – это лишь толика описательных характеристик каждого участника этого мероприятия.
Подведение итогов и награждение победителей
Вот и подошло время огласить тех, кто смог выстоять под натиском кибератак и набрать больше всех очков по окончанию времени игры.
Итоговая таблица получилась такая:
Первое место — команда [Censored], Балтийский федеральный университет имени И. Канта.
Второе место — команда SiBears, Томский государственный университет.
Третье место — команда WildRide, Челябинский государственный университет.
Таким образом, тройка призеров финала RuCTF 2012 получила свои кубки:
А организаторы развернули целых подарочный магазин!
Ведь все оказалось просто – заработанные очки переконвертировали в настоящие деньги, а на них можно было сразу же не сходя со сцены выбрать нужные каждому участнику команды подарки! На каждом подарке был свой ценник.
Раскладывание подарков:
И каждая команда по очереди (начиная с первого места) подходила к этой мега куча девайсов и выбирала себе необходимые гаджеты.
Если у команды [Censored] был большой выбор, то у SiBears было поменьше вариантов подарков:
А команде WildRide осталось совсем немного в выборном ассортименте.
Но в итоге все были довольны!
И под финал финала свершился переход главного приза RuCTF от команды победительницы RuCTF 2011 к новому победителю и обладателю этого трофея!
Далее были поздравления и теплые слова от всех капитанов команд и конечно же обещание следующий финал провести еще интереснее и сложнее!
Приятно, когда проходят такие соревнования, ведь видишь, сколько реально упертых, собранных и широкоформатных личностей командно борются за обладание звание самой продвинутой, подкованной и удачливой командой RuCTF 2012 года.
А то, что организаторы создали на мероприятии такую теплую, уютную атмосферу – это вообще выше всех похвал.
Если Вы хотите посмотреть более расширенный комплект фотоматериалов автора по этому мероприятию, то они находятся тут.
Второе мероприятие.
Финал 38-ого чемпионата мира по программированию «The 2014 ACM ICPC World Finals», г. Екатеринбург, 23-25 июня 2014 года
В 2014 году прошел уже второй в России чемпионат мира по программированию (в 2013 году финал ACM ICPC 2013 проходил в г. Санкт-Петербурге).
Вот только в 2014 году финал был самым масштабным за историю чемпионата по количеству участников.
122 команды-участницы (всего более 1000 участников из 41 страны — студентов-программистов, тренеров, группы поддержки, службы обеспечения чемпионата), 300 волонтеров Уральского федерального университета (УрФУ) и еще команда волонтеров со всего мира, 7 лучших отелей Екатеринбурга, 39 автобусов-шаттлов, 2 рядом находящиеся площадки в центре города в зеленой зоне – ДИВС «Уралочка»(дворец игровых видов спорта Уралочка, далее — ДИВС) и ККТ «Космос» (киноконцертный театр, далее – ККТ «Космос»), 5 часов на решение командой из 3-х человек, 1 компьютера и калькулятора 12 очень сложных заданий…
Правила, участники, организаторы и волонтеры
Но вернемся немного назад, ведь 122 команды прошли долгих путь от побед в локальных отборочных соревнованиях (300 тысяч студентов приняли в них участие в 2013 году) и первых мест в полуфиналах в своих регионах мира (Europe, Asia, North America, South Pacific, Latin America, Africa and the Middle East) до попадания в финал. И квоты были очень жесткие. Многие сильные команды не прошли дальше этих отборов, хотя, более везучим, смышленым и новым командам открылась дорога в финал.
На региональный уровень в 2014 году вышло рекордное количество финалистов: 32043 участника из 2286 университетов 94-х стран соревновались на 300 различных площадках на 6 континентах с целью получить одно из 122 приглашений на финал чемпионата по программированию в России в г. Екатеринбург.
Тут уже спорт, разум и внутренняя организация каждой команды стали единым целым. И каждая из 122 команд, приехавшим в гости в Екатеринбург, уже является чемпионом.
Вот только лучших из лучших тут и можно будет обозначить и поздравить в конце мероприятия.
На пути к призовому месту командам необходимо будет выдержать пять часов соревнований, которые потребуют от участников напряжения всех интеллектуальных и психологических сил в условиях стресса, высокой собранности и желания победить себя.
Официальный сайт чемпионата 2014 года в России.
Чемпионат мира по программированию (ICPC – International Collegiate Programming Contest, ежегодно проходит под эгидой «Ассоциации вычислительной техники», Association for Computing Machinery — ACM) проводится для того, чтобы выращивать все более и более совершенные поколения программистов, которые смогут решать технические задачи на более высоком уровне.
Победители ICPC прошлых лет из России – это разработчики «ВКонтакте», «Яндекс», Mail.ru и т.д.
Самое первое командное соревнование по спортивному программированию под эгидой Ассоциации вычислительной техники (ACM) состоялось в США, в Техасском университете в далеком 1970 году. Свой нынешний формат чемпионат мира по программированию принял в 1977 году, когда первый финал был проведен в рамках ежегодной конференции ACM по информатике среди студентов.
С тех пор соревнование в рамках чемпионата проводится ежегодно, а начиная с 1989 года его основной организацией занимается университет Бэйлора (штат Техас, США). Так же в разное время спонсорами соревнований становились такие компании, как Apple, AT&T и Microsoft, однако с 1997 года и до сих пор генеральным спонсором является компания IBM. Причем, вклад спонсоров является очень существенным как в техническом, программном оснащении участников и судей, так и в социальном и образовательном отношении ко всем участникам чемпионата.
С 1977 по 1989 в олимпиаде преимущественно участвовали команды вузов из США и Канады, другие страны мира были представлены одной европейской региональной группой. Однако, начиная с 1990 года, благодаря распространению персональных компьютеров, каждый год начали появляться новые региональные группы, а география соревнований ощутимо расширилась. И теперь студенты со всего мира могут полноправно доказать свои навыки и возможности на всех этапах чемпионата каждый год.
Организаторы чемпионата в г. Екатеринбурге в 2014 году являются:
Только благодаря четкой слаженности и хорошим взаимоотношениям между всеми организаторами (количество сотрудников и волонтеров, задействованных в организации финала было около тысячи человек, если не больше) был достигнут высокий профессиональный уровень проведения чемпионата мира по программированию в г. Екатеринбурге.
Каждой команде-финалисту и ее тренеру организаторы предоставили места в гостинице, обеспечили переезд до мест проведения соревнований, бесплатное трехразовое питание и насыщенную культурную программу (да-да! По своим бейджикам финалисты могли посещать бесплатно музеи, культурные центры и много замечательных достопримечательностей в г. Екатеринбурге), так же работал почти целую неделю бесплатный высокоскоростной wi-fi Интернет для каждого участника Чемпионата мира по программированию в Зоне ICPC (отели, ДИВС, ККТ «Космос»).
Открытие
Впервые за пределами США финал чемпионата мира по программированию ACM-ICPC состоялся в 1999 г. в Нидерландах, а затем в разные годы чемпионат принимали университеты Канады, КНР, Японии, Чехии, Польши, Швеции и России (уже дважды).
Итак, Global Programming Championship, 38th Annual World Finals of the ACM International Collegiate, The 2014 ACM ICPC World Finals Ekaterinburg, Russia состоялся в период 23.06.14-26.06.14.
На самом деле мероприятие началось еще 20 июня с приезда волонтеров, сервисной группы организаторов, которые начали развертывать технические системы финала и следить, как проходят последние приготовления на площадках.
Места проведения были огорожены, везде установлена соответствующая охрана, чтобы участники соревнований чувствовали себя абсолютно защищенными (хотя по городу они так же свободно передвигались и через день-другой начали хорошо ориентироваться в центре).
ДИВС (дворец игровых видов спорта) принял на себя сам финал, а в ККТ «Космос» (киноконцертный театр) участники обедали, проводили свободное время, там же состоялись церемонии открытия и закрытия финала Чемпионата мира по программированию:
Подготовка в субботу и воскресенье – это бессонные дни и ночи у организаторов:
В субботу и воскресенье в г. Екатеринбург со всего мира прилетали и приезжали участники финала. Не обходилось и без курьезов, например, авиакомпания Аэрофлот потеряла багаж своих пассажиров, включая и финалистов. Но эта неприятность не убавила пыл борьбы никому из участников. Тем более, организаторы старались максимально быстро решать все вопросы и проблемы, которые появлялись у финалистов.
А ведь все было на английском языке, не забывайте, как официальном языке соревнования!
И вот настал понедельник 23 июня, когда все участники с утра были доставлены автобусами до ККТ «Космос». Причем полицейское сопровождение каждой вереницы шаттлов было так же организованно очень хорошо. Еще три дня в плотных городских потоках 39 шаттлов возили участников соревнований по городу. Даже были специальные маршрутки, которые возили участников (по их желанию) между ДИВС и ККТ «Космос», хотя там расстояние 300 метров всего между площадками.
Понедельник, за час до церемонии открытия:
Народ собирается в большом зале на церемонию открытия.
Режиссерский пульт и зал ККТ Космос:
Церемония открытия по-уральски:
В ходе церемония открытия финалисты выслушали приветственные речи всех-всех организаторов, посмотрели видеоролики о чемпионате и месте проведения, выступление «Уральского молодежного симфонического оркестра», и музыкантов.
Закончилось открытие объявлением старта чемпионата исполнительным директором чемпионата Биллом Паучером.
«Вы — звезды вселенной под названием «ICPC 2014»! Я поздравляю всех финалистов, а также тех, благодаря кому проведение чемпионата стало возможно. Всех нас собрал Екатеринбург, город на границе Востока и Запада, Азии и Европы. Но это вовсе не значит, что границы существуют между нами. Сегодня мы объединены желанием показать наш характер, силу воли, силу мысли, отточить навыки программирования, углубить знания. Именно за нами будущее, за нами — 22-й век!» — заявил Билл Паучер.
Во вторник, 24 июня в ДИВС «Уралочка» прошла репетиция финальных соревнований, после чего участники упражнялись в произвольных практических занятиях, настраивались на финал и просто немного отвлекались, гуляя по городу.Увидеть в центре столько иностранцев-программистов было очень интересно!
Финал. Правила, борьба и результаты
Среда 25 июня. Девять часов утра, участники уже в ДИВСе ждут начало финала.
Пока что команды фотографируются около кубка чемпионов на удачу.
Предфинальное волнение и просто ожидание начала:
Для болельщиков есть отдельные ПК с трансляцией и информацией о ходе финала:
Место расположение команд на сцене-арене ДИВС:
За 40 минут до старта соревнований…. Арена ждет своих героев!
Все просто – каждая команда состоит из трех участников. Кстати, девушек среди участников очень мало, можно сосчитать на пальцах одной руки (я не насчитал в зале во время соревнования больше трех даже, хотя по списку участников можно увидеть, что их должно быть немного больше).
За столом у каждой команды из техники (предоставляется организаторами) — компьютер и калькулятор. Команда занимает свое место без любой носимой техники, документов и электронных\бумажных носителей. Задания выдаются на месте, открываются всеми командами в одно время и начинается турнир по их решению.
Трогать ноутбук (смещать его с места, открывать, вставлять в него флэшки и т.п.) и проводить с ним любые действия категорически запрещено, как помогать и общаться с другими командами, тренером, гостями с трибун. За всеми этими запретами внимательно следили судьи, которые в большом количестве ходили между столами, рядами столов и смотрели, чтобы не было нарушено ни одно из правил проведения финала!
На всякий случай, организаторами были приготовлены два запасных стола для участников, если бы с их текущим оборудованием произошли неполадки в течение финала. Эти столы так и остались до конца финала не востребованные, но оборудование на них постоянно находилось в боевом ожидании.
Рабочее место каждой команды:
Сидеть будут плотненько, но есть место для раздумий все равно!
Чем можно официально пользоваться (помимо головы и рук):
Все очень хорошо организаторами отмаркировано и зафиксировано:
Команды за полчаса до начала выходят на арену, трогают кубок чемпионов на удачу и занимают свои места за столами под бурные аплодисменты организаторов и зрителей:
Удивлению и просто эмоциям нет предела, хотя во вторник днем ранее уже была тестовая прогонка финала для команд:
Время тикает и до начала соревнования уже осталось немного (старт по местному времени в 10-00 (8-00 по Москве) и 5 часов далее битвы…):
Организаторы объявляют старт финала и участники открывают пакеты с заданиями:
Зрители, болельщики, тренеры, друзья и соратники участников команд внимательно следят за соревнованиями, организаторы выдают им тоже задания и многие углубляются в их изучение:
Задачи в количестве 12 штук были очень….актуальные и сложные. Больше половины никто даже не решил в итоге!
Сам когда читал их – понял не всё, а когда смотрел, как это делают участники на площадке – просто дивился их сдержанностью и спокойствием.
Задачи можно посмотреть тут.
Скачать для просмотра и чтения в pdf можно тут.
2014 ACM-ICPC World Finals Tasks (задания):
Задача 1. A. «Baggage» – никто не решил!
Задача 2. B. «Buffed Buffet» – 11 команд решили, первой решила со второй попытки команда St. Petersburg State University.
Задача 3. C. «Crane Balancing» — 55 команды решили, первой решила команда Shanghai Jiao Tong University.
Задача 4. D. «Game Strategy» — 96 команд решили, первой решила команда Moscow State University.
Задача 5. E. «Maze Reduction» — 16 команд решили, первой решила команда University of Warsaw.
Задача 6. F. «Messenger» — 1 команда решила с восьмой попытки, команда Moscow State University.
Задача 7. G. «Metal Processing Plant» — 3 команды решили, первой решила с девятой попытки команда SungKyunKwan University.
Задача 8. H. «Pachinko» – никто не решил!
Задача 9. I. «Sensor Network» — 10 команд решили, первой решила со второй попытки команда Iowa State University.
Задача 10. J. «Skiing» – никто не решил!
Задача 11. K. «Surveillance» — 66 команд решили, первой решила со второй попытки команда Tsinghua University.
Задача 12. L. «Wire Crossing» – никто не решил!
Решением каждого задания является написанная и переданная судьям программа (код на С\С++ или Java), успешно прошедшая серию тестов на сервере судей. Побеждает в финале команда, которая правильно решит наибольшее количество заданий, а в случае равенства по решениям — команда, затратившая на это меньше времени, чем соперники. За каждое решение присуждается определенное время в минутах, за неверное решение так же присуждаются штрафные минуты.
Причем, тактика и стратегия у каждой команды своя, заранее придуманная и отлаженная тренером за годы работы с командой.
Например, среди трех участников обычно один очень хороший математик и два сильных программиста. Математик читает задания, вычленяет те, на которые есть решения сразу или могут появиться далее, а программисты преобразуют его решения из набросков текстово-графических материалов в блокноте в машинный код и отправляют судьям на проверку. Пока один программист работает с компьютером, второй уже набрасывает код на следующее решение задачи. Далее они меняются.
Если судьи принимают решение задачи без замечаний, то берется в разработку следующее задание. Если от судей приходит уведомление, что решение ошибочно, то нужно искать в коде и в расчетах неточности или решать другую задачу, а к этой вернуться позже.
Многие сложные задачи команды отправляли судьям по нескольку раз после исправления кода. И даже 8-9 раз переделывать решение приходилось командам и это было в норме из-за сложности задач, как оказалось! А ведь за каждую новую попытку отправить решение насчитывались штрафные баллы так же.
За участниками финала наблюдали онлайн множество камер и официальных судей чемпионата на площадке:
Первая команда на 17 минуте решила первую задачу! Шарики с наградой (первое решение и решение задачи) на их столик приносят организаторы.
Шары разных цветов вывешивались далее всем командам, которые решали ту или иную задачу как первыми, так и по факту. Зрители могли по цвету шаров понимать, какую именно задачу команды решили и общую ситуацию в зале. В итоге, много шаров так и осталось не вывешено, уж больно задачи были хорошие и неприступные.
Проходят часы, команды решают задачи, получают шары-признания, нервы накалены, хотя немного сглаживает ситуацию легкий обед, который предоставляли организаторы за каждый стол участникам:
За час до конца соревнований электронное табло с текущим счетом было заморожено. И там уже была интересная информация (бурно обсуждаемая почти три часа после заморозки еще по всему миру) о лидерах:
Но в конце пятого часа актуальность этой информации была под большим вопросом, так как команды начали проявлять усиленную активность и некоторые из них сумели обойти своих более именитых соперников!
Ведь задачи были очень сложные (из 12 только 7 и меньше правильно решили лучшие команды):
Потом еще два часа после окончания соревнования организаторы не объявляли результаты, так как на церемонии закрытия финала чемпионата все результаты должны официально быть подготовлены, перепроверены, чтобы ошибок не было и претензий ни у кого не возникало.
А вот уже на церемонии закрытия все почести и лавры победителям и призерам достались по полной!
Список победителей чемпионата мира по программированию ACM ICPC 2014:
Лидеры по регионам (можно понять уровень участников):
Europe — St. Petersburg State University, 1 место;
Asia — Peking University, 3 место;
North America — New York University, 13 место;
South Pacific — University of New South Wales, 22 место;
Latin America — Instituto Militar de Engenharia, 26 место;
Africa and the Middle East — Alexandria University — Faculty of Engineering, 66 место.
Команда УрФУ заняла почетное 60 место.
Команда-победитель СПбГУ в составе Егора Суворова, Дмитрия Егорова и Павла Кунявского выполнила 7 из 12 задач за 5 часов. Так же стоит обязательно упомянуть Андрея Лопатина, тренера команды!
Это фото я сделал за сорок минут до начала финала, ребята из Питера были уже готовы к сражению на все 200 процентов!
«ACM-ICPC – это прекрасная возможность для студентов со всего мира собраться вместе и обменяться ценным опытом, – говорит доктор Билл Паучер (Bill Poucher), профессор Университета Бэйлора (Baylor University) и исполнительный директор чемпионата ACM-ICPC. – Я рад наблюдать за тем, как молодые люди используют знания, полученные в процессе соревнования, для дальнейшего развития по выбранному академическому и карьерному пути как члены Ассоциации Вычислительной Техники (ACM)».
Помимо участия в чемпионате, студенты получили возможность познакомиться с последними разработками лаборатории IBM Research & Development Labs и пообщаться с ведущими международными экспертами в области информационных технологий, а также принять участие в экскурсиях по Екатеринбургу.
Команда Санкт-Петербургского государственного университета решила семь задач за пять часов, продемонстрировав исключительный уровень профессиональных навыков и умение оперативно решать сложнейшие задачи. Чемпионы по программированию вернутся домой с наградой «Самый умный приз» (The World's Smartest Trophy), а также с призами и предложениями стажировок или работы в IBM и других лидирующих компаний ИТ-индустрии. Кто бы сомневался!
Следующий финал чемпионата мира по программированию состялся в Марокко в 2015 году, но это уже совсем другая история!
Справочная информация:
Команды, занявшие первые четыре места, получают золотые медали. Занявшие места с пятого по восьмое награждаются серебряными медалями. Команды, занявшие места с девятого по двенадцатое, получат бронзовые медали.
Команда, занявшая первое место, объявляется чемпионом и получает Кубок чемпиона мира и вознаграждение в размере $12 000. Каждая из трех других команд, завоевавших золотые медали, получит по $6 000. Команды, ставшие серебряными медалистами, получат вознаграждение в размере $3 000. Награда бронзовых призеров – $1 500.
Россию представляли команды из высших учебных заведений: МГУ, УрФУ, МФТИ, ВШЭ, МИСиС, СПбГУ, СПбГУ ИТМО, Ижевский технический университет, Новосибирский, Петрозаводский и Саратовский госуниверситеты.
Вот только в 2014 году финал был самым масштабным за историю чемпионата по количеству участников.
122 команды-участницы (всего более 1000 участников из 41 страны — студентов-программистов, тренеров, группы поддержки, службы обеспечения чемпионата), 300 волонтеров Уральского федерального университета (УрФУ) и еще команда волонтеров со всего мира, 7 лучших отелей Екатеринбурга, 39 автобусов-шаттлов, 2 рядом находящиеся площадки в центре города в зеленой зоне – ДИВС «Уралочка»(дворец игровых видов спорта Уралочка, далее — ДИВС) и ККТ «Космос» (киноконцертный театр, далее – ККТ «Космос»), 5 часов на решение командой из 3-х человек, 1 компьютера и калькулятора 12 очень сложных заданий…
Правила, участники, организаторы и волонтеры
Но вернемся немного назад, ведь 122 команды прошли долгих путь от побед в локальных отборочных соревнованиях (300 тысяч студентов приняли в них участие в 2013 году) и первых мест в полуфиналах в своих регионах мира (Europe, Asia, North America, South Pacific, Latin America, Africa and the Middle East) до попадания в финал. И квоты были очень жесткие. Многие сильные команды не прошли дальше этих отборов, хотя, более везучим, смышленым и новым командам открылась дорога в финал.
На региональный уровень в 2014 году вышло рекордное количество финалистов: 32043 участника из 2286 университетов 94-х стран соревновались на 300 различных площадках на 6 континентах с целью получить одно из 122 приглашений на финал чемпионата по программированию в России в г. Екатеринбург.
Тут уже спорт, разум и внутренняя организация каждой команды стали единым целым. И каждая из 122 команд, приехавшим в гости в Екатеринбург, уже является чемпионом.
Вот только лучших из лучших тут и можно будет обозначить и поздравить в конце мероприятия.
На пути к призовому месту командам необходимо будет выдержать пять часов соревнований, которые потребуют от участников напряжения всех интеллектуальных и психологических сил в условиях стресса, высокой собранности и желания победить себя.
Официальный сайт чемпионата 2014 года в России.
Чемпионат мира по программированию (ICPC – International Collegiate Programming Contest, ежегодно проходит под эгидой «Ассоциации вычислительной техники», Association for Computing Machinery — ACM) проводится для того, чтобы выращивать все более и более совершенные поколения программистов, которые смогут решать технические задачи на более высоком уровне.
Победители ICPC прошлых лет из России – это разработчики «ВКонтакте», «Яндекс», Mail.ru и т.д.
Самое первое командное соревнование по спортивному программированию под эгидой Ассоциации вычислительной техники (ACM) состоялось в США, в Техасском университете в далеком 1970 году. Свой нынешний формат чемпионат мира по программированию принял в 1977 году, когда первый финал был проведен в рамках ежегодной конференции ACM по информатике среди студентов.
С тех пор соревнование в рамках чемпионата проводится ежегодно, а начиная с 1989 года его основной организацией занимается университет Бэйлора (штат Техас, США). Так же в разное время спонсорами соревнований становились такие компании, как Apple, AT&T и Microsoft, однако с 1997 года и до сих пор генеральным спонсором является компания IBM. Причем, вклад спонсоров является очень существенным как в техническом, программном оснащении участников и судей, так и в социальном и образовательном отношении ко всем участникам чемпионата.
С 1977 по 1989 в олимпиаде преимущественно участвовали команды вузов из США и Канады, другие страны мира были представлены одной европейской региональной группой. Однако, начиная с 1990 года, благодаря распространению персональных компьютеров, каждый год начали появляться новые региональные группы, а география соревнований ощутимо расширилась. И теперь студенты со всего мира могут полноправно доказать свои навыки и возможности на всех этапах чемпионата каждый год.
Организаторы чемпионата в г. Екатеринбурге в 2014 году являются:
- Уральский федеральный университет при поддержке Администрации города и правительства Свердловской области;
- ACM — Ассоциация вычислительной техники;
- IBM — крупнейшая в мире компания, занимающаяся технологическими и информационными продуктами;
- СКБ Контур — федеральный разработчик интернет-сервисов, программного обеспечения для бизнеса и бухгалтерии.
Только благодаря четкой слаженности и хорошим взаимоотношениям между всеми организаторами (количество сотрудников и волонтеров, задействованных в организации финала было около тысячи человек, если не больше) был достигнут высокий профессиональный уровень проведения чемпионата мира по программированию в г. Екатеринбурге.
Каждой команде-финалисту и ее тренеру организаторы предоставили места в гостинице, обеспечили переезд до мест проведения соревнований, бесплатное трехразовое питание и насыщенную культурную программу (да-да! По своим бейджикам финалисты могли посещать бесплатно музеи, культурные центры и много замечательных достопримечательностей в г. Екатеринбурге), так же работал почти целую неделю бесплатный высокоскоростной wi-fi Интернет для каждого участника Чемпионата мира по программированию в Зоне ICPC (отели, ДИВС, ККТ «Космос»).
Открытие
Впервые за пределами США финал чемпионата мира по программированию ACM-ICPC состоялся в 1999 г. в Нидерландах, а затем в разные годы чемпионат принимали университеты Канады, КНР, Японии, Чехии, Польши, Швеции и России (уже дважды).
Итак, Global Programming Championship, 38th Annual World Finals of the ACM International Collegiate, The 2014 ACM ICPC World Finals Ekaterinburg, Russia состоялся в период 23.06.14-26.06.14.
На самом деле мероприятие началось еще 20 июня с приезда волонтеров, сервисной группы организаторов, которые начали развертывать технические системы финала и следить, как проходят последние приготовления на площадках.
Места проведения были огорожены, везде установлена соответствующая охрана, чтобы участники соревнований чувствовали себя абсолютно защищенными (хотя по городу они так же свободно передвигались и через день-другой начали хорошо ориентироваться в центре).
ДИВС (дворец игровых видов спорта) принял на себя сам финал, а в ККТ «Космос» (киноконцертный театр) участники обедали, проводили свободное время, там же состоялись церемонии открытия и закрытия финала Чемпионата мира по программированию:
Подготовка в субботу и воскресенье – это бессонные дни и ночи у организаторов:
В субботу и воскресенье в г. Екатеринбург со всего мира прилетали и приезжали участники финала. Не обходилось и без курьезов, например, авиакомпания Аэрофлот потеряла багаж своих пассажиров, включая и финалистов. Но эта неприятность не убавила пыл борьбы никому из участников. Тем более, организаторы старались максимально быстро решать все вопросы и проблемы, которые появлялись у финалистов.
А ведь все было на английском языке, не забывайте, как официальном языке соревнования!
И вот настал понедельник 23 июня, когда все участники с утра были доставлены автобусами до ККТ «Космос». Причем полицейское сопровождение каждой вереницы шаттлов было так же организованно очень хорошо. Еще три дня в плотных городских потоках 39 шаттлов возили участников соревнований по городу. Даже были специальные маршрутки, которые возили участников (по их желанию) между ДИВС и ККТ «Космос», хотя там расстояние 300 метров всего между площадками.
Понедельник, за час до церемонии открытия:
Народ собирается в большом зале на церемонию открытия.
Режиссерский пульт и зал ККТ Космос:
Церемония открытия по-уральски:
В ходе церемония открытия финалисты выслушали приветственные речи всех-всех организаторов, посмотрели видеоролики о чемпионате и месте проведения, выступление «Уральского молодежного симфонического оркестра», и музыкантов.
Закончилось открытие объявлением старта чемпионата исполнительным директором чемпионата Биллом Паучером.
«Вы — звезды вселенной под названием «ICPC 2014»! Я поздравляю всех финалистов, а также тех, благодаря кому проведение чемпионата стало возможно. Всех нас собрал Екатеринбург, город на границе Востока и Запада, Азии и Европы. Но это вовсе не значит, что границы существуют между нами. Сегодня мы объединены желанием показать наш характер, силу воли, силу мысли, отточить навыки программирования, углубить знания. Именно за нами будущее, за нами — 22-й век!» — заявил Билл Паучер.
Во вторник, 24 июня в ДИВС «Уралочка» прошла репетиция финальных соревнований, после чего участники упражнялись в произвольных практических занятиях, настраивались на финал и просто немного отвлекались, гуляя по городу.Увидеть в центре столько иностранцев-программистов было очень интересно!
Финал. Правила, борьба и результаты
Среда 25 июня. Девять часов утра, участники уже в ДИВСе ждут начало финала.
Пока что команды фотографируются около кубка чемпионов на удачу.
Предфинальное волнение и просто ожидание начала:
Для болельщиков есть отдельные ПК с трансляцией и информацией о ходе финала:
Место расположение команд на сцене-арене ДИВС:
Перечень команд по номерам
Команды финала 2014 (нумерация по алфавиту и согласно расположению в зале):
1. Alexandria University — Faculty of Engineering.
2. American University of Beirut.
3. Amrita University.
4. Anil Neerukonda Institute of Technology and Sciences.
5. Bangladesh University of Engineering and Technology.
6. Beijing Institute of Technology.
7. Beijing Normal University.
8. Belarusian State University.
9. Bina Nusantara University.
10. Cairo University — Faculty of Computers and Information.
11. Carnegie Mellon University.
12. Comenius University.
13. Delft University of Technology.
14. Delhi Technological University.
15. Escuela Superior De Computo Instituto Politecnico Nacional.
16. ETH Zurich.
17. FPT University.
18. Fudan University.
19. Fuzhou University.
20. German University in Cairo.
21. Ho Chi Minh City University of Science.
22. Hunan University.
23. Indian Institute of Technology — Bombay.
24. Indian Institute of Technology — Indore.
25. Indian Institute of Technology — Madras.
26. Indian Institute of Technology — Roorkee.
27. Instituto Militar de Engenharia.
28. Instituto Tecnologico de Santo Domingo.
29. International Institute of Information Technology – Hyderabad.
30. International IT University.
31. Iowa State University.
32. Izhevsk State Technical University.
33. Jagiellonian University in Krakow.
34. Jilin University.
35. Kaunas University of Technology.
36. Korea University.
37. Kyoto University.
38. Massachusetts Institute of Technology.
39. Michigan Technological University.
40. Moscow Institute of Physics & Technology.
41. Moscow State University.
42. Moscow State University – Tashkent.
43. National Research University Higher School of Economics.
44. National Sun-Yat-Sen University.
45. National Taiwan University.
46. National University of Science and Technology «MISiS».
47. National University of Singapore.
48. Nazarbayev University.
49. New York University.
50. Northwestern University.
51. Novosibirsk State University.
52. Odessa National Mechnikov University.
53. Peking University.
54. Petrozavodsk State University.
55. Pontificia Universidad Catolica del Peru.
56. Princess Sumaya University for Technology.
57. Renmin University of China.
58. Saratov State University.
59. Shahjalal University of Science and Technology.
60. Shanghai Jiao Tong University.
61. Sharif University of Technology.
62. South China Agricultural University.
63. South China University of Technology.
64. St. Petersburg National Research University of IT, Mechanics and Optics.
65. St. Petersburg State University.
66. Stanford University.
67. SungKyunKwan University.
68. Taras Shevchenko Kiev National University.
69. Taurida V.I. Vernadsky National University.
70. The Chinese University of Hong Kong.
71. The University of Texas at Brownsville.
72. The University of Tokyo.
73. The University of Waikato.
74. Tishreen University.
75. Tokyo Institute of Technology.
76. Tsinghua University.
77. Universidad Autonoma de Aguascalientes.
78. Universidad Catolica San Pablo.
79. Universidad de Buenos Aires – FCEN.
80. Universidad de Chile.
81. Universidad de Oriente — Sede Antonio Maceo.
82. Universidad Nacional de Colombia – Bogota.
83. Universidad Panamericana Campus Bonaterra.
84. Universidad Tecnologica de Pereira.
85. Universidade de Sao Paulo.
86. Universidade de Sao Paulo — Campus de Sao Carlos.
87. Universidade Estadual de Campinas.
88. Universidade Federal de Campina Grande.
89. Universidade Federal de Pernambuco.
90. Universitaet des Saarlandes.
91. Universitat Politecnica de Catalunya.
92. University of Bucharest.
93. University of California at Berkeley.
94. University of California Irvine.
95. University of Cambridge.
96. University of Cape Town.
97. University of Central Florida.
98. University of Chicago.
99. University of Electronic Science and Technology of China.
100. University of Indonesia.
101. University of Latvia.
102. University of Lethbridge.
103. University of Maryland.
104. University of Michigan at Ann Arbor.
105. University of New South Wales.
106 .University of Sciences DPR Korea.
107. University of Southern California.
108. University of Toronto.
109. University of Tsukuba.
110. University of Virginia.
111. University of Warsaw.
112. University of Wisconsin – Madison.
113. University of Wroclaw.
114. University of Zagreb.
115. Ural Federal University.
116. V.N. Karazin Kharkiv National University.
117. Vanderbilt University.
118. Vinnytsia National Technical University.
119. Virginia Tech.
120. Zhejiang University.
121. Zhejiang University of Technology.
122. Zhongshan (Sun Yat-sen) University.
1. Alexandria University — Faculty of Engineering.
2. American University of Beirut.
3. Amrita University.
4. Anil Neerukonda Institute of Technology and Sciences.
5. Bangladesh University of Engineering and Technology.
6. Beijing Institute of Technology.
7. Beijing Normal University.
8. Belarusian State University.
9. Bina Nusantara University.
10. Cairo University — Faculty of Computers and Information.
11. Carnegie Mellon University.
12. Comenius University.
13. Delft University of Technology.
14. Delhi Technological University.
15. Escuela Superior De Computo Instituto Politecnico Nacional.
16. ETH Zurich.
17. FPT University.
18. Fudan University.
19. Fuzhou University.
20. German University in Cairo.
21. Ho Chi Minh City University of Science.
22. Hunan University.
23. Indian Institute of Technology — Bombay.
24. Indian Institute of Technology — Indore.
25. Indian Institute of Technology — Madras.
26. Indian Institute of Technology — Roorkee.
27. Instituto Militar de Engenharia.
28. Instituto Tecnologico de Santo Domingo.
29. International Institute of Information Technology – Hyderabad.
30. International IT University.
31. Iowa State University.
32. Izhevsk State Technical University.
33. Jagiellonian University in Krakow.
34. Jilin University.
35. Kaunas University of Technology.
36. Korea University.
37. Kyoto University.
38. Massachusetts Institute of Technology.
39. Michigan Technological University.
40. Moscow Institute of Physics & Technology.
41. Moscow State University.
42. Moscow State University – Tashkent.
43. National Research University Higher School of Economics.
44. National Sun-Yat-Sen University.
45. National Taiwan University.
46. National University of Science and Technology «MISiS».
47. National University of Singapore.
48. Nazarbayev University.
49. New York University.
50. Northwestern University.
51. Novosibirsk State University.
52. Odessa National Mechnikov University.
53. Peking University.
54. Petrozavodsk State University.
55. Pontificia Universidad Catolica del Peru.
56. Princess Sumaya University for Technology.
57. Renmin University of China.
58. Saratov State University.
59. Shahjalal University of Science and Technology.
60. Shanghai Jiao Tong University.
61. Sharif University of Technology.
62. South China Agricultural University.
63. South China University of Technology.
64. St. Petersburg National Research University of IT, Mechanics and Optics.
65. St. Petersburg State University.
66. Stanford University.
67. SungKyunKwan University.
68. Taras Shevchenko Kiev National University.
69. Taurida V.I. Vernadsky National University.
70. The Chinese University of Hong Kong.
71. The University of Texas at Brownsville.
72. The University of Tokyo.
73. The University of Waikato.
74. Tishreen University.
75. Tokyo Institute of Technology.
76. Tsinghua University.
77. Universidad Autonoma de Aguascalientes.
78. Universidad Catolica San Pablo.
79. Universidad de Buenos Aires – FCEN.
80. Universidad de Chile.
81. Universidad de Oriente — Sede Antonio Maceo.
82. Universidad Nacional de Colombia – Bogota.
83. Universidad Panamericana Campus Bonaterra.
84. Universidad Tecnologica de Pereira.
85. Universidade de Sao Paulo.
86. Universidade de Sao Paulo — Campus de Sao Carlos.
87. Universidade Estadual de Campinas.
88. Universidade Federal de Campina Grande.
89. Universidade Federal de Pernambuco.
90. Universitaet des Saarlandes.
91. Universitat Politecnica de Catalunya.
92. University of Bucharest.
93. University of California at Berkeley.
94. University of California Irvine.
95. University of Cambridge.
96. University of Cape Town.
97. University of Central Florida.
98. University of Chicago.
99. University of Electronic Science and Technology of China.
100. University of Indonesia.
101. University of Latvia.
102. University of Lethbridge.
103. University of Maryland.
104. University of Michigan at Ann Arbor.
105. University of New South Wales.
106 .University of Sciences DPR Korea.
107. University of Southern California.
108. University of Toronto.
109. University of Tsukuba.
110. University of Virginia.
111. University of Warsaw.
112. University of Wisconsin – Madison.
113. University of Wroclaw.
114. University of Zagreb.
115. Ural Federal University.
116. V.N. Karazin Kharkiv National University.
117. Vanderbilt University.
118. Vinnytsia National Technical University.
119. Virginia Tech.
120. Zhejiang University.
121. Zhejiang University of Technology.
122. Zhongshan (Sun Yat-sen) University.
За 40 минут до старта соревнований…. Арена ждет своих героев!
Все просто – каждая команда состоит из трех участников. Кстати, девушек среди участников очень мало, можно сосчитать на пальцах одной руки (я не насчитал в зале во время соревнования больше трех даже, хотя по списку участников можно увидеть, что их должно быть немного больше).
За столом у каждой команды из техники (предоставляется организаторами) — компьютер и калькулятор. Команда занимает свое место без любой носимой техники, документов и электронных\бумажных носителей. Задания выдаются на месте, открываются всеми командами в одно время и начинается турнир по их решению.
Трогать ноутбук (смещать его с места, открывать, вставлять в него флэшки и т.п.) и проводить с ним любые действия категорически запрещено, как помогать и общаться с другими командами, тренером, гостями с трибун. За всеми этими запретами внимательно следили судьи, которые в большом количестве ходили между столами, рядами столов и смотрели, чтобы не было нарушено ни одно из правил проведения финала!
На всякий случай, организаторами были приготовлены два запасных стола для участников, если бы с их текущим оборудованием произошли неполадки в течение финала. Эти столы так и остались до конца финала не востребованные, но оборудование на них постоянно находилось в боевом ожидании.
Рабочее место каждой команды:
Сидеть будут плотненько, но есть место для раздумий все равно!
Чем можно официально пользоваться (помимо головы и рук):
Все очень хорошо организаторами отмаркировано и зафиксировано:
Команды за полчаса до начала выходят на арену, трогают кубок чемпионов на удачу и занимают свои места за столами под бурные аплодисменты организаторов и зрителей:
Удивлению и просто эмоциям нет предела, хотя во вторник днем ранее уже была тестовая прогонка финала для команд:
Время тикает и до начала соревнования уже осталось немного (старт по местному времени в 10-00 (8-00 по Москве) и 5 часов далее битвы…):
Организаторы объявляют старт финала и участники открывают пакеты с заданиями:
Зрители, болельщики, тренеры, друзья и соратники участников команд внимательно следят за соревнованиями, организаторы выдают им тоже задания и многие углубляются в их изучение:
Задачи в количестве 12 штук были очень….актуальные и сложные. Больше половины никто даже не решил в итоге!
Сам когда читал их – понял не всё, а когда смотрел, как это делают участники на площадке – просто дивился их сдержанностью и спокойствием.
Задачи можно посмотреть тут.
Скачать для просмотра и чтения в pdf можно тут.
2014 ACM-ICPC World Finals Tasks (задания):
Задача 1. A. «Baggage» – никто не решил!
Задача 2. B. «Buffed Buffet» – 11 команд решили, первой решила со второй попытки команда St. Petersburg State University.
Задача 3. C. «Crane Balancing» — 55 команды решили, первой решила команда Shanghai Jiao Tong University.
Задача 4. D. «Game Strategy» — 96 команд решили, первой решила команда Moscow State University.
Задача 5. E. «Maze Reduction» — 16 команд решили, первой решила команда University of Warsaw.
Задача 6. F. «Messenger» — 1 команда решила с восьмой попытки, команда Moscow State University.
Задача 7. G. «Metal Processing Plant» — 3 команды решили, первой решила с девятой попытки команда SungKyunKwan University.
Задача 8. H. «Pachinko» – никто не решил!
Задача 9. I. «Sensor Network» — 10 команд решили, первой решила со второй попытки команда Iowa State University.
Задача 10. J. «Skiing» – никто не решил!
Задача 11. K. «Surveillance» — 66 команд решили, первой решила со второй попытки команда Tsinghua University.
Задача 12. L. «Wire Crossing» – никто не решил!
Решением каждого задания является написанная и переданная судьям программа (код на С\С++ или Java), успешно прошедшая серию тестов на сервере судей. Побеждает в финале команда, которая правильно решит наибольшее количество заданий, а в случае равенства по решениям — команда, затратившая на это меньше времени, чем соперники. За каждое решение присуждается определенное время в минутах, за неверное решение так же присуждаются штрафные минуты.
Причем, тактика и стратегия у каждой команды своя, заранее придуманная и отлаженная тренером за годы работы с командой.
Например, среди трех участников обычно один очень хороший математик и два сильных программиста. Математик читает задания, вычленяет те, на которые есть решения сразу или могут появиться далее, а программисты преобразуют его решения из набросков текстово-графических материалов в блокноте в машинный код и отправляют судьям на проверку. Пока один программист работает с компьютером, второй уже набрасывает код на следующее решение задачи. Далее они меняются.
Если судьи принимают решение задачи без замечаний, то берется в разработку следующее задание. Если от судей приходит уведомление, что решение ошибочно, то нужно искать в коде и в расчетах неточности или решать другую задачу, а к этой вернуться позже.
Многие сложные задачи команды отправляли судьям по нескольку раз после исправления кода. И даже 8-9 раз переделывать решение приходилось командам и это было в норме из-за сложности задач, как оказалось! А ведь за каждую новую попытку отправить решение насчитывались штрафные баллы так же.
За участниками финала наблюдали онлайн множество камер и официальных судей чемпионата на площадке:
Первая команда на 17 минуте решила первую задачу! Шарики с наградой (первое решение и решение задачи) на их столик приносят организаторы.
Шары разных цветов вывешивались далее всем командам, которые решали ту или иную задачу как первыми, так и по факту. Зрители могли по цвету шаров понимать, какую именно задачу команды решили и общую ситуацию в зале. В итоге, много шаров так и осталось не вывешено, уж больно задачи были хорошие и неприступные.
Проходят часы, команды решают задачи, получают шары-признания, нервы накалены, хотя немного сглаживает ситуацию легкий обед, который предоставляли организаторы за каждый стол участникам:
За час до конца соревнований электронное табло с текущим счетом было заморожено. И там уже была интересная информация (бурно обсуждаемая почти три часа после заморозки еще по всему миру) о лидерах:
Но в конце пятого часа актуальность этой информации была под большим вопросом, так как команды начали проявлять усиленную активность и некоторые из них сумели обойти своих более именитых соперников!
Ведь задачи были очень сложные (из 12 только 7 и меньше правильно решили лучшие команды):
Потом еще два часа после окончания соревнования организаторы не объявляли результаты, так как на церемонии закрытия финала чемпионата все результаты должны официально быть подготовлены, перепроверены, чтобы ошибок не было и претензий ни у кого не возникало.
А вот уже на церемонии закрытия все почести и лавры победителям и призерам достались по полной!
Список победителей чемпионата мира по программированию ACM ICPC 2014:
- Санкт-Петербургский государственный университет, (золотая медаль, чемпион мира);
- Московский государственный университет, (золотая медаль, 2-ое место);
- Пекинский университет, (золотая медаль, 3-е место);
- Национальный университет Тайваня, (золотая медаль, 4-ое место);
- Варшавский университет, (серебряная медаль, 5-ое место);
- Шанхайский транспортный университет, (серебряная медаль, 6-ое место);
- Токийский университет, (серебряная медаль, 7-ое место);
- Загребский университет, (серебряная медаль, 8-ое место);
- Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики (ИТМО), (бронзовая медаль, 9-ое место);
- Национальный исследовательский университет «Высшая школа экономики», (бронзовая медаль, 10-ое место);
- Университет Циньхуа, (бронзовая медаль, 11-ое место);
- Университет им. Коменского, (бронзовая медаль, 12-ое место).
Лидеры по регионам (можно понять уровень участников):
Europe — St. Petersburg State University, 1 место;
Asia — Peking University, 3 место;
North America — New York University, 13 место;
South Pacific — University of New South Wales, 22 место;
Latin America — Instituto Militar de Engenharia, 26 место;
Africa and the Middle East — Alexandria University — Faculty of Engineering, 66 место.
Команда УрФУ заняла почетное 60 место.
Команда-победитель СПбГУ в составе Егора Суворова, Дмитрия Егорова и Павла Кунявского выполнила 7 из 12 задач за 5 часов. Так же стоит обязательно упомянуть Андрея Лопатина, тренера команды!
Это фото я сделал за сорок минут до начала финала, ребята из Питера были уже готовы к сражению на все 200 процентов!
«ACM-ICPC – это прекрасная возможность для студентов со всего мира собраться вместе и обменяться ценным опытом, – говорит доктор Билл Паучер (Bill Poucher), профессор Университета Бэйлора (Baylor University) и исполнительный директор чемпионата ACM-ICPC. – Я рад наблюдать за тем, как молодые люди используют знания, полученные в процессе соревнования, для дальнейшего развития по выбранному академическому и карьерному пути как члены Ассоциации Вычислительной Техники (ACM)».
Помимо участия в чемпионате, студенты получили возможность познакомиться с последними разработками лаборатории IBM Research & Development Labs и пообщаться с ведущими международными экспертами в области информационных технологий, а также принять участие в экскурсиях по Екатеринбургу.
Команда Санкт-Петербургского государственного университета решила семь задач за пять часов, продемонстрировав исключительный уровень профессиональных навыков и умение оперативно решать сложнейшие задачи. Чемпионы по программированию вернутся домой с наградой «Самый умный приз» (The World's Smartest Trophy), а также с призами и предложениями стажировок или работы в IBM и других лидирующих компаний ИТ-индустрии. Кто бы сомневался!
Следующий финал чемпионата мира по программированию состялся в Марокко в 2015 году, но это уже совсем другая история!
Справочная информация:
Команды, занявшие первые четыре места, получают золотые медали. Занявшие места с пятого по восьмое награждаются серебряными медалями. Команды, занявшие места с девятого по двенадцатое, получат бронзовые медали.
Команда, занявшая первое место, объявляется чемпионом и получает Кубок чемпиона мира и вознаграждение в размере $12 000. Каждая из трех других команд, завоевавших золотые медали, получит по $6 000. Команды, ставшие серебряными медалистами, получат вознаграждение в размере $3 000. Награда бронзовых призеров – $1 500.
Россию представляли команды из высших учебных заведений: МГУ, УрФУ, МФТИ, ВШЭ, МИСиС, СПбГУ, СПбГУ ИТМО, Ижевский технический университет, Новосибирский, Петрозаводский и Саратовский госуниверситеты.