Пять лет моего ACM. Часть 1. СУНЦ УрГУ

May 10, 2011 03:00



До поступления в 10 класс СУНЦ я учился в школе 184. Я слукавлю, если скажу, что там не учили программировать. В средней школе я радостно командовал черепашками в "ЛогоМирах" и получал от этого удовольствие. О том, что такое "синенькие компиляторы" я узнал в ОЗШ (Очно-заочной школе по математике и информатике при ИММ УрО РАН), куда поехал после 8-го класса. Там, на ликбезе Сидоровой Е. В., я узнал, что такое "Паскаль", а заодно и операторы read/write/if. Более того, почти осознал for/while. В 9 классе у меня была книжка про Turbo Pascal и я писал либо программы, которые считают что-то простое, либо с программы с графикой. Первые получались неплохо.

Потом я поступил в физ-мат СУНЦ УрГУ, но в плане информатики ничего не изменилось - я по-прежнему умеренно программировал на Паскале (этого хватало, чтобы быть примерно в топ-5 класса) и почти не участвовал в олимпиадах. Тут-то и произошло моё первое столкновение с Ним. Со Спортивным Программированием. С ACM. Одноклассник позвал меня на командную олимпиаду школьников в УрГУ. Почему бы нет? Интернета дома у меня не было, поэтому я сурово зарегистрировал команду не на сайте, а прямым звонком в деканат мат-меха. Секретарский почерк сделал своё дело - в октябре 2003 года на соревнование пришла команда "Кошелев-Самеонов-Рохин". Три человека за одним компьютером? Восемь (!) задач? Более того, задач, которые НЕ решаются? Мы втроём были шокированы таким поворотом событий и пытались продраться через литературные условия минут 80. В конце концов, я нашёл задачу, в которой, по-моему, нужно было просто перемножить два числа. Убедив товарищей, я написал 3 строки кода и получил ACCEPTED. Но что делать дальше? Я взялся было писать вторую задачу, но сдался под натиском однокомандников. Они предложили вариант получше - читать анекдоты в интернете и громко смеяться. Так и прошли оставшиеся три часа - периодически к нам подбегал забавный молодой студент-очкарик и грозил дисквалификацией, но этого так и не случилось. Позже мы были очень благодарны Вове Яковлеву (а это был он) - наша команда заняла 21-е место из 29, а команда самого Даниила Айзенштейна - 22-е. Опыт был забавный, но не более. До конца 10 класса я жил в стороне от олимпиад, а там и переходный возраст накрыл меня с головой.

Перед 11 классом я снова поехал в ОЗШ, и там было здорово. Я поделил с Севой Опариным из Новоуральска, выпускником 9 класса и матёрым олимпиадником, первое место на олимпиаде по информатике, не решив ни одной задачи - только за счёт грамотных "заглушек", в которых повезло не насажать ошибок и хитрых "частичных" решений типа честно изобретённой мной "сеточки" в задаче на геометрию. Сева нашёл меня и позвал на командную олимпиаду. Сева был настолько круче меня, что отказываться было глупо. Третьим мы, недолго думая, взяли человека, занявшего на олимпиаде третье место - Даниила Айзенштейна. Была проблема - Сева знал только C++, а мы с Даниилом - только Паскаль. Вышли из ситуации просто - решили, что Сева самый умный и будет писать код в одиночку, а мы с Даниилом будем "думать". Так появилась школьная команда "Taktak".
И вот в ОЗШ понял, что же такое командные олимпиады: рядом с тобой два умных человека, вы общаетесь, вы продавливаете задачи, вы ищете ошибки в рассуждениях и коде друг друга. Вы способны на многое. Мы сдали 5 задач из 6. У второго места была 1 задача. Не сдали мы единственную задачу - какой-то загадочный гроб, про который нам сказали "ну вы что, это же классическое динамическое программирование". Словосочетание было незнакомым, а значит - у нас не было шансов. Мы поняли, что можно участвовать и в официальных командных олимпиадах. Мы поняли, что нам втроём явно стоит попробовать.

Но мы с Даниилом учились в СУНЦ, а Сева - в Новоуральске. Преподаватели ОЗШ, Паша Васёв и Катя Овечкина открыли нам дорогу в ACM и предложили "тренироваться" по воскресеньям, в офисе их фирмы. Они сказали, что осенью будет командное первенство, и к нему нужно готовиться. Они показали нам архив задач - Timus Online Judge. Мы сыграли на нём школьное первенство осени 2000 года и сдали (не без помощи Паши) 5 задач. А потом случилось страшное - Паша показал нам таблицу результатов - в 2000 году команда СУНЦ (Логинов-Белов-Садым) сдала 8 задач из 8 и выиграла соревнование. Паша сказал: "Ну вот, чтобы сейчас хорошо выступать, нужно решать задачи примерно как они в 2000 году". Тогда я понял - "Хочу". Я хочу в это играть, и я хочу в это выигрывать. Мне кажется, примерно в этот момент у меня появился настрой, благодаря которому у меня потом получилось стать профессиональным ACM-щиком.

Осеннее первенство мы сыграли очень слабо, хотя и заняли 4 место. Тогда мне казалось, что нам "не повезло", и мы же явно могли выступить лучше. Это не так. Научиться выступать так, "как можешь" - это самая сложная задача в ACM, и её решают годами.

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

Мы с Севой вдвоём (Даниил уехал на олимпиаду по математику) сходили на (студенческий) чемпионат УрГУ и нагло позвали в команду учителя, Илью Петрова. Там мы сдали 2 задачи и заняли 9 место. Точнее, Илья сдал 2 задачи, а мы с Севой были шокированы сложностью задач и тем, что команда Саши Ипатова (Расковалов-Ипатов-Иванков) сдали аж 7 задач. Нам сказали, что они поедут на полуфинал и будут отбираться на Чемпионат Мира. Это звучало очень круто.

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

С обидой я справился быстро - во-первых, все другие лицеисты тоже провалились, во-вторых, я же только начинаю, хоть и 11-классник. Наша тусовка продолжала жить - дважды в неделю, в Лицее, по вечерам, мы рубились в ACM и отчаянно пытались решать утешительные задачи. Глядя, как Сева транслирует мои идеи в код на C++, я очень быстро выучил язык и решал Тимус дома, иногда отправляя Саше Ипатову длинные письма с просьбами о помощи.

Интересно было в пол-глаза смотреть на "мастодонтов" - студентов УрГУ. На финал в Шанхай пробилась загадочная для меня команда Мусин-Пупырев-Яковлев. Там они выступили классно, заняв 17 место. Саша Ипатов жаловался на жизнь и то, что из их команды уходит суперзвезда Ден Расковалов, и ему придётся брать кого-то другого. Взяли, да так, что новая команда T-34 (Ипатов-Иванков-Мелентьев) обогнали команду Вовы на чемпионате Урала. У них жизнь тоже кипела, поактивнее, чем у нас.

Конечно, я не прошёл от Лицея на областную олимпиаду (проиграв даже Даниилу, который опоздал на лицейскую олимпиаду и сидел за компьютером только в течение 30 минут вместо 4 часов), а на вуз-академе провалил второй тур и занял лишь 15 место. Тем не мене, кодировать я научился. Весной 2005 года было ещё одно командное первенство, и Taktak там выступила как никогда раньше. Я с удивлением понял, что уже пишу не в разы хуже Севы. Мы устроили "вертушку" - пока один писал продуманный код, другой общался с Даниилом. ACCEPTED-поменялись-ACCEPTED-поменялись. Всё прошло прекрасно, мы сдали невообразимое для нас количество задач - 7. Правда, проиграли таки вечным соперникам из Гимназии 9, а другая команда СУНЦ, со Славой Исенбаевым, сдала... Подождите, сколько? Они сдали 12 задач? 12? За час до конца? Однако, высаживаться я вновь не стал - слишком чувствовался мой прогресс с начала года (да и Слава Исенбаев в будущем стал чемпионом мира, трудно на него равняться).

Весна-лето 2005 года были, безусловно, одним из самых счастливых и радужных отрезков жизни. Было тепло, Лицей спокойно и мило закончился, я много гулял, болтал днями и ночами напролёт и находил время на хобби. В августе 10-классники из Лицея вернулись из Летней компьютерной школы, научившись совершенно немыслимым для меня трюкам и алгоритмам. Стало понятно, что Сева в 11 классе будет играть в одной команде с Исенбаевым. Я поехал в ОЗШ преподавателем и провёл там свой первый контест, в одиночку подготовив целых 7 задач и поняв, что готовить задачи не менее интересно, чем задачи решать.

Девушка, которая подарила мне весну и лето, в августе уехала учиться и умнеть в Питер. За месяц до этого она подарила мне на день рождения библию ACM-щика, книгу Кормена. А я остался и пошёл в УрГУ. Я думал, что на направлении МТ меня научат математике и думать. Я думал, что мы с Даниилом найдём себе третьего. Я думал, что мы будем играть в ACM - это же так интересно.

спортивное программирование, байки ветеранов

Previous post Next post
Up