Sammarize's blog

By Sammarize, 13 years ago, In Russian
1. День первый.

Мы с Колей пришли, зарегистрировались. Потом открытие и техническое совещание. Ничего нового не услышали =) А вот потом пробный тур, и это было существенно! Во-первых, не буду вдаваться в подробности, но пришлось приложить существенные усилия для того, чтобы можно было использовать компилятор С++ из-под фара. Во-вторых, на нашей клавиатуре пробел нажимался пример один раз из двух =) Мы заявили об этом, спросив, можно ли заметить клавиатуру? 

Нам ответили, как в анекдоте: "можно, заменяйте. Только сейчас, завтра будет нельзя". Как будто мы с собой привезли клавиатуру на этот случай) Ну, в общем, пришлось обратиться к оргкомитету лично, чтобы нам заменили клаву на нормальную.


2. День второй.
Сначала я с печалью понаблюдал, как Коля в TopSpeedCoder не успел сдать задачу D и вылетел с 10 места. Он пришёл в зал совещаний, мы успели пообсуждать задачи. Потом техническое совещание по Code Warriors Challenge. Нам рассказали суть задачи (впрочем, она была описана в книжечке, которую нам выдали ещё на регистрации, то есть, думать об этом можно было уже день как). Если вкратце, надо было написать бота, который бы управлял Карлсоном, который может летать и стрелять в других карлосонов телевизорами и плюшками, и в процессе этого собирать варенье. Выигрывает Карлсон, собравший больше всех варенья.

К концу тех. совещания приехал Саша. Удивился тому, что над задачей можно было думать уже целый день =) После этого было время пообедать в местной столовой, и потом - Code Warriors Challenge.

В отличие от Всесиба, в течение всего тура было ощущение, что мы занимаемся делом. Сначала Саша придумал, что он должен бегать туда-сюда по земле, всё время поворачиваться и стрелять, когда есть, в кого. Посмотрели - получается хреново: не достаёт выстрелами до тех, кто наверху. Решили, пусть бегает на высоте 0.5. Стало лучше, он стал попадать. Потом сделали точную стрельбу - написали пару формул. Правда, допустили баг, который я заметил уже после тура, на следующий день: мы в одном месте забыли взять по модулю, из-за чего он иногда выбирал неправильный корень квадратного уравнения. То есть, находясь вплотную с другим карлсоном, он стрелял высоко вверх, так, чтобы пышка или телевизор через 2 секунды упали на него) Потом сделали, чтобы он нормально летал за бонусами, а не по спирали =) Под конец контеста решили поднять его на высоту 0.7 - так он был ближе к карлсонам, которые летали на самом верху. За три минуты до конца успели затестить то, что получилось - взяли Донецкого бота, Московского и, кажется, Ижевского, и он их порвал, забрав себе больше половины общего количества варенья. Удовлетворившись, послали) После конца взяли троих финальных ботов, набравших наибольшее количество варенья, и наш бот с трудом вышен на 2 место среди них =/

В общем, ощущение осталось непонятное и странное)

3. День третий.

Основной тур.

Встали в 9, в течение часа ехали от гостиницы до ЮФУ, по дороге пытаясь найти место, чтобы поесть. В итоге остановились на местной столовой. Всё в Таганроге открывается в 10 утра, не раньше! Поели, потом попили чай/кофе в кафетерии в той же столовой.

И, наконец, главное действие - основной командный турнир.


Саша сразу увидел стандартную задачу А (Хиппимобиль), рассказал решение стал её писать. Тем временем я увидел простую задачу В (монополии), но понял, что лучше найти задачи, которые будут писаться проще, и отложил её. Потом я увидел более простую задачу G (море дырок), показал Саше. Он мне показал, что эта задача не такая простая, как мне показалось, и продолжил писать А, а я стал думать, как нормально писать G. Тем временем Коля обнаружил очень простую задачу К (Вудсток), рассказал мне решение, мы согнали с компа Сашу и Коля быстро закодил К и сдал.

Мы посмотрели в монитор - мы девятые, у всех по одной задаче. У нас решено 4 задачи. Саша сел обратно дописывать А.

Быстро дописал и сдал. В мониторе вышли на первое место, обогнав Волгоград по времени.

Дальше мы с Сашей обсудили, как писать G, и он сел её писать, а Коля тем временем нашёл простую задачу С и решил.

Пока Саша писал G, Коля рассказал мне решение, я согласился, и Коля стал его продумывать. Я тем временем стал читать другие задачи.

Саша сдал G, посмотрели в монитор - мы там вторые по времени, отстаём от Донецка. Мы не успели увидеть, что Донец на той же минуте сдал четвёртую задачу)

Коля сразу же сел писать С, а я тем временем прочитал Е (HAL 9000). Это была простая математическая игрушка, я решил её с прочтения и рассказал решение Саше. Пока Коля дописывал С, у Сашы было немного времени, чтобы продумать решение. Мы решили не выводить формулу для ответа, а просто проитерировать. Коля сдал С, это была наша 4 задача, а у Донецка уже было 4 к тому моменту. И мы увидели, что Донецк сдал задачу I (вторая попытка). Саша сел писать Е. Тем временем, Коля сообщил мне, что читал I, и там очень неприятное условие. Я прочитал, условие неприятное, но понятное. Понятно, что делать, надо просто закодить. В общем, задача для Саши, подумал я. Саша быстро написал и сдал E, это пятая задача, пока всё с плюса. Смотрим в монитор, у Донецка пять задач, сданных в первый час, они опережают нас по времени.

Я показал Саше I, он немного подумал, как её писать и стал писать. Мы с Колей, тем временем, смотрели в остальные задачи. Наиболее понятной мне показалась задача F (турнир), я стал её решать. И довольно быстро разобрался, как она решается. Стал рассказывать Коле, и видим - нестыковка получается: в моём решении ответа "NO" не бывает, а в тестах он есть. Перечитали условие - действительно, условие я понял немного неправильно. Но ничего страшного, решение не стало более сложным, просто немного другим. Я рассказал новую версию, доказал, что работает, Коля согласился, и сразу же придумал, как легко это написать. Тем временем Саша дописал I и послал. Пришёл, если не ошибаюсь, WA. Саша 10 секунд смотрел в код, исправил размеры массивов, и перепослал - Ас =) Смотрим в монитор - у нас 6 и у Донецка 6, они по-прежнему лидируют по времени. Неудивительно, если они каждую задачу сдают раньше нас, и тоже почти всё с плюса =) Посмотрел, что такого Донецк решил, что мы не решили: оказалось, задачу В.

Коля сел писать F, а я посмотрел в В. Глядь - а я ж её решил в самом начале контеста! Рассказал решение Саше, он согласился. Некоторое время мы обсуждали, как бы это попроще написать. Наконец Саша пришёл к какому-то наиболее удобному для себя варианту, и стал продумывать код. Я, тем временем, стал копаться в четырёх нерешённых задачах. Это были: задача D (конвеер), там где надо было как-то за O(NK) работать с битовыми масками, задача L (в поле ягода навсегда), там, очевидно, какая-то хитрая динамика, где надо было бы вовсю попользоваться тем, что поле периодично, и делать не за O(KL), а за O(MN). Задача H (студия звукозаписи), в которой я с трудом прочитал и понял условие, и задача J (точки). Наиболее перспективными мне показались задачи L и J. Тем временем, Коля дописал и сдал F, седьмая задача (у Донецка тоже 7), и Саша пошёл писать В. Мы с Колей немного пообсуждали задачу D и задачу L, думали, как писать L, чтобы быстро работало. Потом я стал думать над J, а Коля, кажется, над L. Тем временем, Саша сдал В в 2:58, у нас оказалось 8 задач, у донецка тоже 8, у Волгограда 7. Перед нами были 2 часа и 4 сложные задачи.

Саша потребовал, чтобы я хорошенько разобрался в Н и проверил понимание условия на семплах (и ведь прав был!). Я прочитал, раборался, проверил. Но желания решать её эта задача всё равно не вызывала, и я вернулся к J. Ещё немного подумав и разобравшись с J, я вроде примерно понял, как обойтись поиском в глубину, чтобы проверять, какие точки активны, а какие - нет. Я рассказал это Коле, мы вроде поняли, как писать, и Коля пошёл писать. Тем временем, мы с Сашей посмотрели на L. У нас одновременно возникли какие-то идеи, и, немного пообсуждав, мы придумали, как это довольно просто делать за O(NK). По времени должно было проходить.

Тем временем Коля дописал J (это было незадолго до frozen), и у него не заработало. Саше ещё надо было время на обдумывание L, и мы стали искать баг с компом. Сделали отладочный вывод, увидели, что он не видит, что определённая клетка находится в окружении. Саша попросил комп, мы распечатали код и отладочный вывод, и стали читать код. За следующие полчаса мы, постоянно мешая Саше, нашли примерно 4 бага коде, и обрели правильное полнимание условия. В результате этого, программа наконец стала работать на всех семплах. Мы послали и получили TL 8. Это было примерно за 20 минут до конца.

Мы всё ещё надеялись сдать две задачи, поэтому Саша сел перепечатывать код L, который он уже практически написал на бумажке. Коля придумал, как избавиться от одного из 4 dfs'ов, исправил, перепослал - TL 8. Саша написал первый, самый простой кусок решения, и стало понятно, что задачу L мы уже не сдадим. Стали втроём оптимизить J. Увеличили размер стека, понаставили break'ов, стелали ещё 4 попытки, но тщётно - TL 8 так и остался нашим лучшим результатом по этой задаче.

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

4. День четвёртый.
Результаты и награждение.
Впечатление от результатов CWC - полный рандом =) Очень хотелось бы все матчи проводить по 10 раз, и суммировать результаты, или и вовсе устраивать чемпионат - это было бы, конечно, не так зрелищно, но справедливо. Но, поскольку мы не знаем, какие были бы результаты, если бы так и сделали, то жаловаться на несправедливость было бы странно)
Награждение, как награждение. Лучше, чем в Новосибирске =)
Призы заслуживают отдельного внимания =) Не считая диплома в рамочке на команду и трёх обычных дипломов для участников, а так же медалей, нам выдали четыре (!) попарно различных (!!) приза =) Мы с Колей забрали себе сумку для CD, микроSD и наушники, а геймпад, разумеется, достался Саше, который улетел в Питер ещё вчера)

Общее впечатление - всё вполне прилично организовано, не считая фейла с призами и рандома на CWC. Спасибо организаторам)
  • Vote: I like it
  • +9
  • Vote: I do not like it