Биография ещё одного спортивного программиста.
Практически всё своё детство я провёл в Костроме, учился в костромской школе, общался со сверстниками и людьми постарше, увлекался футболом, математикой и ничем больше.
Но так как я учился не в «классе звёзд» нашего потока, мои вторые места на школьных олимпиадах по математике никто не замечал (мне до сих пор интересно почему), и я не ходил ни на город, ни в кружок, никуда ещё. Всего, как обычно, пришлось добиваться самому.
Где-то в 7 классе меня заметил школьный преподаватель по информатике – Чижов Сергей Васильевич, предложил мне позаниматься паскалем. Но уже во втором уроке я увидел физическую формулу (кто из вас любил физику в школе?) и бежал в ужасе от туда. =)
Затем в начале 8 классе он мне дал задачку – посчитать 2^500. К концу 8 класса я придумал длинную арифметику и успешно решил её, параллельно распечатав 2 в степени 5000 на листе А4 6-м шрифтом, впрочем быстро обнаружилось, что степень двойки заканчивается нечётным числом. =) Вот он первый счастливый опыт дебага в поиске ошибок.
В 9-м классе мной овладел Visual Basic, я самостоятельно, по весёлой и занимательной книжке, изучил язык, принципы работы языка, объектно-ориентированный подход к программированию (что помогает мне до сих пор). Затем следовала 832-х страничная книжечка «Использование Visual Basic 6», первая программа на 2000 строк, осознание того, что не всякая правильно написанная программа будет работать без ошибок, и закат эпохи VB у меня в голове.
Так же в 9 классе я попробовал позаниматься математикой, пришел на вступительную олимпиаду, немного не получил очков для прохода в супергруппу, но теперь ничуть об этом не жалею. Занимался с нами Сидоров Александр Васильевич, он рассказал нам, что есть Матиндукция, дал основы антагонистических игр, в общем дал серьёзный толчок в развитии меня как математика.
Паскаль. Как много в этом слове. В 10м классе моя мама позвонила в Центр доп. образования одарённых школьников, чтобы узнать, как можно попасть на занятия по программированию. По телефону ей сказали, что это нереально, что дети там занимались по 4 года и уже что-то знают и т.п. В итоге (спасибо её упорству) она добилась время и места проведения вступительной олимпиады.
Я пришел посмотреть на занятия младшей группы и увидел, что там всё кисло. Когда пришел на вступительную олимпиаду увидел (по лицам xD), что грамотных людей здесь немного и решил... писать олимпиаду не в младшую группу, а в старшую. И прошел. С последним местом. Там быстро-быстро я узнал основы школьного олимпиадного программирования. Занятия проводил Козырев Сергей Борисович.
Так же в 10 классе началось разделение программисты/экономисты. На занятиях у Моисеева Бориса Михайловича я получше изучил TP 7.0, и узнал формулу количества сочетаний (я же не занимался олимпиадной математикой).
Городскую олимпиаду я написал, заняв 2е место. Затем было немного времени подготовки к области. На области я уже занял первое место и поехал на заключительный этап (зоналка тогда ещё или уже не проводилась), который проходил в Новосибирске. Всероссийская олимпиада меня тогда очень впечатлила, я посмотрел на Великих в олимпиадном движении РФ. =)
Летом между 10 и 11 классами я в первый раз поехал в Летнюю многопредметную школу, проходившую тогда под Волгореченском (Костромская область) на базе Берендеевых полян (там сейчас проходит ЛКШ?). Узнал много нового, выиграл все возможные турниры (в связи с отсутствием конкуренции)
11й класс был занят олимпиадами, программированием, проблемами личного характера, и поступлением. Поступление. Я хотел поступать в ИТМО, но по семейным причинам поступил в Костромской ГУ им Н.А.Некрасова. Школу и область я выиграл, на России (как мне потом сказали) выступил неплохо, но уж больно сложные задачи были в том году в Кисловодске.
1й курс был посвящен учебе, я съездил на Воронежскую олимпиаду, познакомился там с Никитой Рыбаком, Виталием Гольдштейном и своим будущим тренером, а тогда студентом 5 курса, Виноградовым Виктором. Из Воронежа увёз диплом 6й степени. Так же съездил на четвертьфинал в Рыбинске.
Между 1 и 2 курсом я съездил в ЛМШ (2007год, Красная Горка) лаборантом на информатику, где познакомился с моей будущей женой – 10-классницей-биологиней. 2й курс был посвящен ей, но я ещё съездил в Воронеж во второй раз, забрал там диплом пятой степени, так же съездил на четвертьфинал во второй раз (в качестве студента).
В 2008 году я перевожусь в ЯрГУ на 2й курс (в связи с разницей в учебных планах), и начинаю там тренироваться под руководством Виктора. Выиграв отборы в Рыбинск я собрал себе команду из 2х пятикурсников, и мы без проблем прошли в Питер, где, впрочем, выступили средне.
В этом же учебном году съездил в Иваново на открытый личный чемпионат ИГЭУ по программированию, заняв там 5е место.
В сезоне 2009-2010 на отборе на четвертьфинал занимаю 4е место, но один человек отказывается от участия, и я снова попадаю в первую команду, сформированную уже в этот раз из 4курсника Афанасьева Дмитрия (на данный момент самый сильный участник, на мой взгляд), Быковой Надежды – студентки 3 курса математического факультета и меня – студента 3го курса. Впрочем на четвертьфинале вторая команда ЯрГУ в чистую обгоняет нас, и в полуфинал выходят две команды ЯрГУ.
До полуфинала я успел съездить в Воронеж и привезти оттуда диплом четвертой степени. Саратовские студенты были там на высоте. =)
На полуфинале в этот раз задачи были уж больно жесткими, а в начале контеста вся команда усиленно тупила, в итоге мы заняли 122 место. Самое интересное, что после контеста каждый утверждал, что именно он виноват в таком результате, но я то знаю, что больше всех виноват я!
Но самое главное – мы сфоткались с Биллом Паучером – директором ACM ICPC! xD Нашли мы его в макдаке и совершенно случайно. =)
Ещё в этом году успел съездить в Вологду и привезти оттуда диплом 3й степени, заняв 4е место.
Если вы смогли всё это осилить – вы псих. о_О
На данный момент я немного решаю задачи и изучаю новые алгоритмы.
Наш тренер надеется, что когда-нибудь студенты его вуза смогут съездить на финал ICPC (а заодно и его прихватят =)).
Спасибо всем, кто это читал.
Спасибо мне, что я смог всё это изложить.
P.S.: в итоге могу добавить, что для достижения чего-нибудь перед собой надо ставить цели и добиваться их, хотя бы частично, никогда не опускать руки и идти по жизни с улыбкой, даже если на душе грустно.
Кстати раз уж сайт сделан силаси Саратовского ГУ еще упомяну что вторая смена в этом году будет проходиь под Саратовом.
Таки завидую тебе, ибо у нас в институте олимпиадничество тщательно скрывается (я узнал о существовании команды вообще в середине второго курса из новости на сайте универа), поэтому после команды Козырева моя олимпиадническая деятельность прервалась почти на полтора года. Щас пытаемся что-то поднимать, надеемся увидется
"...олимпиадничество тщательно скрывается..."
Хорошо сказано =)
кто из вас любил физику в школе?
Я любил. А вот в универе не люблю :-)
Я любил лишь после двухмесячной подготовки к ЕГЭ и сдачи его на 83. Мне с преподавателями не везло крайне, а точнее с отношениями между мной и преподавателями. =)
А физика - интересная наука так то... Но в 7 и 8 классе... не любил. =)
Черт, надо же такое имя чтобы было у чувака. С точностью до отчества. Это точно не прикол?
Точно не прикол. =)
http://vkontakte.ru/photo-272124_121673581
http://ksu.edu.ru/index.php?option=com_content&task=view&id=159&Itemid=409
Настоящее - даровано.
Не могу сказать, что горжусь результатами.
Но разве в биографии люди пишут лишь то, чем они гордятся?
Что могу сказать, тебе еще повезло. У тебя в биографии появлялись люди - тренера, учителя, которые видели в тебе талант и пытались тебя не то, что бы даже научить. хотя бы просто направить в нужном направлении, курировали как-то, чтобы ты развивался. Ты поездил по различным олимпиадам, лагерям. Пусть даже с переменным успехом, но это уже что-то. Плюс у тебя были сокомандники, которым не наплевать на результат.
Я к чему это говорю все. Чтобы добиться каких-либо успехов - нужно иметь человека - тренера, наставника, куратора - человека, имеющего какой-нибудь опыт в этом деле. И уже в ВУЗе немаловажно иметь сподвижников, товарищей, друзей - с которыми можно было бы собрать команду и чего-то достичь вместе.
Если же ничего этого нет и всем - учителям, сокомандникам на все пофиг - приходится самому все изучать самостоятельно, постепенно улучшать свой уровень, закладывать фундамент так сказать. вообще одному.
И чтобы достичь высокого уровня в таком случае нужно либо иметь великий талант, либо чудовищное трудолюбие и настойчивость.
Просто я сам нахожусь в такой ситуации - никогда не было учителей, не было возможности поехать в ЛКШ, в вузе всем пофиг на это спортивное программирование, команду нормальную не соберешь. Я имею в виду не команду каких-нибудь шабашников, которые участвуют раз в полгода, а команду, члены которой бы тренировались и совершенствовались постоянно.
"в вузе всем пофиг на это спортивное программирование, команду нормальную не соберешь" - а вот это две беды, причем не знаю даже какая страшнее... :(
Есть правда 1 маленькая позитивная новость - один мой сокомандник, имеющий опыт школьных олимпиад сам(!) заинтересовался олимпиадным программированием, попросил у меня книг и задач, чтобы учиться. Сейчас изучает С++, на результат посмотрим после лета.
И есть еще одна новость. Человек, который до этого организовывал походы по нашим олимпиадам - четверть-финал, КБТУ-Опен, снял с себя все полномочия и передал мне. Я теперь админ нашего сайта по спортивному программированию, могу организовывать курсы, контесты в нашем ВУЗе. Палки в колеса мне никто вставлять не будет, даже обещали если что поддержать в мелочах. Я вот теперь думаю, что мне с этим всем добром теперь делать. Есть какие-нибудь идеи по вытаскиванию ВУЗа из болота?
Я бы для начала ответил для себя на вопрос "а нафига это надо мне?"
Шанс на медаль финала легко посчитать. Давайте рассмотрим мониторы прошлых лет и посмотрим, сколько в среднем в год команд из российской провинции получают медаль. В среднем меньше одной. Сколько команд участвует в отборочных с России? Несколько тысяч? Мы оценили наш шанс - один к многим тысячам.
Сколько вдрачивают те "меньше одной команды", чтобы получить медаль? Я могу вас уверить, что те, кто их получил, тренировались по 15 часов в неделю как минимум, а не "2 задачи с тимуса в день".
Таким образом наши шансы на медаль понизились с одного к нескольким тысячам к одному к нескольким миллионам, если мы не тренируемся 15 часов в неделю.
То есть - мотивация НЕ медаль (как мы только что поняли, она не достижима). А что тогда мотивация? Зачем Вы лично занимаетесь этим? Моя мотивация всегда была медаль. Если бы у меня не было цели в виде медали, я бы не секунды на это не потратил. Но я и тренировался 15-20 часов в неделю.
Когда вы сможете для себя четко сформулировать зачем вам это надо, вам уже будет проще это объяснить ВУЗу, ребятам, которым пофиг сейчас, и прочим.
Главное при этом не обманывать себя в "пользе олимпиадного программирования". Это миф тех, кто его пропагандирует. От олимпиадного программирования нет пользы кроме медали :о) И полностью испорченного стиля.
Развитие себя, как программиста и автора алгоритмов. Может не во всех проектах нужны "олимпиадники", но наличие таковых явно должно сказаться на появление каких то более совершенных идей. Не все работают в передовых IT фирмах, но почему и в обычные проекты не привнести более совершенные алгоритмы? Почему такой ценный опыт от олимпиад должен пропадать даром и не реализовываться. Часто на олимпиадах встречаются задачи, которые вполне могли быть использованы и в реальной жизни (оптимизационные задачи). Я понимаю, что не всякий "не олимпиадник" может понять суть, скрытую может за немного "неряшливым" кодом (стиль всё равно худо-бедно можно подправить ) но почему потенциальный покупатель из-за этого не должен получить возможность воспользоваться какой-нибудь хорошей идеей, быстро работающей программой.
Прям как в СССР было. Сколько отличных идей было похоронено из-за того, что народ не хотел рисковать стабильностью и внедрять что то новое. Может и сложное в производстве, но реально более полезное и мощное.
Печально всё это, однако.
Я на работе часто пытаюсь найти применение каким-то алгоритмам, которые знаю, и у меня это почему-то стабильно не получается. Может я просто неудачник :о(
Многие задачи на графовые алгоритмы - поиск кратчайших маршрутов и т.п.
Оптимизация расходов и т.п. - ДП вместо полного перебора.
Геометрические задачи - для создания каких-нибудь AI.
Желательно что-то не тривиальное. Чтобы это не было поощрительной задачей.
И еще сразу вопрос: ведь очевидно, что если человек не знает дийкстру, он может найти ее в интернете по запросу "поиск кратчайшего пути". Получается польза в том, чтобы сэкономить пол часа? Задача такая встает раз в пару месяцев в лучшем случае, пол часа на таком масштабе ничего не стоят. Но зато у вас опыт писать дийкстру в одну функцию без коментариев. Это нечитаемо :о) Как потом другой человек из команды будет ее понимать, допустим если он не знает этого алгоритма?
если подобные алгоритмы и применимы, то уж слишком в специфических областях.
я считаю, гораздо важнее умение соображать, которое весьма неплохо тренируется решением всякого рода задач)
определенно не поощрительная задача =)
хотя и, строго говоря, не форматная..
Ответ получился немного длинным, поэтому вынес в блог: http://codeforces.net/blog/entry/354
Под испорченным стилем я понимаю несколько вещей. Во-первых, бездумное именование переменных. Например, средняя задача среднего олимпиадника содержит треть алфавита однобуквенных переменных.
Во-вторых, отсутствие разбиения кода на логические функции. Чаще всего решение лежит в одной функции (или, по старому не имеющему никакого смысла паскалевскому принципу на три - считывание, решение и вывод), в то время как по хорошему функция должна быть в пределах 10-15 строк и выполнять четко поставленную задачу. С учетом количества задач, которое надо решить, чтобы добиться результатов, все это дело входит очень сильно в привычку, и потом отвыкнуть очень тяжело.
Строчка, котоаря принесла мне успех:
//poss[j].push_back ( p ); // ?????
Я не до конца был уверен, что именно это - причина tle, но оказался прав.
В итоге сдал задачу, за 7 минут до конца контеста, с 4й попытки, и оказался третьим, кто её решил на контесте.
Но самое эпическое определение, которое было в той программе - int total_lowest_fuel_cost;
Когда школьник пересаживается с Turbo Pascal 7.0 (ну или Free Pascal) в 32х-битную нормальную среду разработки, у него появляется больше возможностей и мотиваци использовать внятные, осмысленные имена переменных. Ибо автокомплит сильно помогает в использовании таких переменных.
P.S.: Болезнью "алфавитных идентификаторов" вроде бы страдал не сильно, так как книги по VB, написанные умными авторами, научили меня более или менее нормально определять объекты, например cmbOkButton или chkSaveAsDefault.
>Главное при этом не обманывать себя в "пользе олимпиадного программирования". Это миф тех, кто его пропагандирует. От олимпиадного программирования нет пользы кроме медали :о) И полностью испорченного стиля.
Ну, не скажи. Я, например, занялся олимпиадным программированием через 10 лет после того, как закончил вуз. :) Прежде всего, это удовольствие и хобби (в школе математические задачки любил решать), но есть и польза:
1) тренировка мозга как в логике, так и в стратегическом мышлении
2) улучшение навыков программирования (оценка сложности различных вариантов, меньшее число ошибок за счет тестирования)
3) расширение алгоритмической базы
4) интерес к изучению нового (новые ЯП, подходы, инструменты)
Конечно, в больших программных проектах требуется совсем другие подходы (читабельность, отказоустойчивость и обработка ошибок, повторная используемость и т.п.), но олимпиадное программирование тренирует и гибкость мышления (если использовать его как инструмент для саморазвития, а не получения конкретного бонуса).
Медали или призовые места мен
Новые ЯП - это тоже спорно :о) Всего два официальных ЯП, хотя бы один из них думаю любой человек знает.
Но мне эта цель (победа) глубоко безразлична, мне нравится сам процесс решения задач, а обстановка соревнования добавляет приятных эмоций и адреналина :)
Мне кажется, что ты рассуждаешь именно с точки зрения чемпиона - знаешь стоимость своих затрат и видишь к чему пришёл. Это всё замечательно. Но не всем олимпиадникам суждено стать чемпионами, но почему им хотя бы не сделать хотя бы на немного наш мир лучше.
Это хоть как то окупит затраты на их обучение. Мне кажется всё-таки приятно знать некоторые вещи, которые реально круче "лобовых решений". Но если человеку реально нужна медаль - то я согласен - 15 часов в неделю это выход.
Создаётся такое впечатление что олимпиады нужны только для получения "бумажек" и "железок". Но мне кажется, что основная идея в развитии человека. Мне кажется вполне возможным, что некоторые олимпиадники вполне могли бы написать какие-нибудь реально крутые программы, которые поражали бы своей производительностью и классом проблем, которые они могут решать. А то получается - поработал 5 лет на железку и всё.
Может просто работодатели "убивают" ваш бесценный опыт решением задач абсолютно не вашего уровня?
Тогда можно попробовать организовать популярный сейчас "startup" :)
Мне самому интересно - чем занимаются те, кто стали финалистами. Они превращаются в обычных офисных кодеров или им всё-таки достаются более-менее достойные задачи? Интересно по этому поводу послушать Александра и других.
http://codeforces.net/blog/entry/105
Для стартапа нужны деньги, и достаточно большие :о) Для этого надо работать, и решать задачи, которые не интересны :о)
> От олимпиадного программирования нет пользы кроме медали :о) И полностью испорченного стиля.
+. Категорически согласен!
У меня, честно, нет цели - медаль на финале. Но зато у меня есть вполне чёткая цель - поехать на финал. Думаю это мне поможет этим летом, ибо стремление заниматься огромное. Кстати, ещё одна из моих мотиваций - мне тупо нравится спортивное программирование, контесты, олимпиады и всё прочее, что с этим связано. Но это врядли может сгодиться для мотивации новичкам.
Польза - это что?
Мне пришлось прокрутить 2/3 экрана (разрешение 1024х768), чтобы найти пост, на который был ответ ("зафиксировав" возможное положение предыдущего поста мышкой).
На крышечку не пробовал нажимать? :)
Потому что СРМ-ы это круто. Я жалею о каждом пропущенном СРМ :о)
Я не встаю к сожалению в пять утра, я не пишу те, что раньше восьми, но исключительно потому ,что потом на работу и надо высыпаться. Иначе бы вставал в пять утра.
Это старая тема, и я уже не со всем согласен, что я писал, но на первый взгляд я пытался объяснить, что от СП нет принципиальной пользы для будущего как девелопера. И даже если доказать, что польза есть, она значительно меньше чем если это время потратить например на фриланс.
Я не говорил, что я не получаю удовольствие от СП :о) Я бы не тренировался по 20 часов в неделю, если бы мне это не нравилось. Мне это очевидно нравится.
Сначала был вопрос: "как мотивировать других"
На это было предложено "чтобы мотивировать других, сначала пойми, зачем это тебе"
Если теперь мы понимаем, что "мне это надо потому что это мне интересно", значит других нам мотивировать нечем. Потому что в начале, когда на соревновании сдается в среднем 0.5 задачи, удовольствие от них сомнительное :о)
Другое дело, что нужно пахать по полной, тратя по 5 часов в день на АСМ - это может не каждый позволить; не знаю как там в политехе, где учился Артем, но нас в кбту по учебе напрягают.
Зато в КБТУ можно собрать нормальную команду. У вас их вон 14 аж целых. У нас в АУЭСе и одну собрать тяжело :)
Зато ты точно поедешь в полуфинал, а вот нам нужно пробиться в четверку среди своего универа :) Удачи завтра на четвертьфинале!
Вам тоже удачи, опыта у вас достаточно, уже обязаны попасть в 4-ку!
13 минут назад, # ^
На крышечку не пробовал нажимать? :)
Но там нет обратной крышечки - вернуться на пост, с которого ты нажал крышечку.
Поэтому обратно 2/3 экрана вниз...
Такой скрытый (недокументированный) функционал надо описывать отдельно. (o:
А тема у меня сейчас состоит примерно из 32 экранов.