Как стать автором
Обновить

Комментарии 77

Очень рад, молодцы ребята! Показали всему миру где раки зимуют.
Эх, выкладывали бы ещё задания с чемпов, было бы что обсудить. А так в комментариях пустота и скука.
Более того, если я не ошибаюсь, здесь https://icpc.kattis.com/ вы можете послать своё решение на проверку.
Судя по первой фотке, у них ещё и с клонированием там всё неплохо :)
MIT только 18е…
Очень бросилось в глаза то, что победили ребята из заведения, принимавшего чемпионат. Наталкивает на неприятные мысли, конечно.
Они и в прошлом году победили. И еще в 2004, 2008 и 2009. Чемпионат организовывали другие страны.
Так или иначе, независимые площадки воспринимаются всегда лучше.
ACM ICPC всегда проводился на базе каких-либо учебных заведений. В том числе участвующих в чемпионате.
НЛО прилетело и опубликовало эту надпись здесь
Во-первых, ИТМО побеждает далеко не в первый раз. В пятый, по-моему. Это абсолютный рекорд по количесту побед среди ВУЗов. Это с учетом того, что один человек по правилам может принять участие в финале максимум два раза.
Во-вторых, университет предоставляет только площадку. Задачи и тестирующая система делаются организацией ACM.
Если не в теме, то ИТМО уже легенда чемпионатов ACM ICPC, 9 раз брали золотые медали, 5 раз 1-ое место, это единственный университет, который добился такого за всю историю ACM ICPC.
Ну что Вы, человек просто травмирован российскими реалиями и неспособен объективно мыслить — везде заговоры же, да и влез не в тот топих, похоже.
А как же свои стены помогают? Причем без неприятных мыслей. Морально действительно гораздо проще у себя писать. Хотя и ответственность выше (дома опозориться-то не хочется).
Как будто кто-то сомневался :)
Мне кажется это неуважение — не написать имен победителей.
Искренне поздравляю ребят с мех-мата Пермского Государственного университета с бронзовыми медалями, сам закончил этот университет и этот факультет и очень горд, что учился там!
Очень рад за победителей, но общая таблица с результатами бы не помешала, если она имеется.
Для того, чтобы понять значение всех чисел в таблице, советую ознакомится с правилами. На мой взгляд они лучше всего объяснены в этом видео http://www.youtube.com/watch?v=jKHYE3CWloU. Оно снято для Чемпионата Урала, а не для ACM ICPC, но правила там такие же.
Спасибо!
Если первую двадцатку смотреть — восемь мест российских. Приятно, хоть сам не большой болельщик и фанат. Гордость берет еще за родной политех (АлтГТУ), который обскакал всякие МИТы и Стенфорды и чутка не дотянул до бронзовой медали (15-ое место). Так держать! Все молодцы!
Ребята молодцы, поздравляю.
Радует еще и то что команда родного кну заняла достойное место
Очень рискую, но все же выскажусь. Скорость решения сложных задач практически нигде не требуется. Требуется вдумчивая реализация подсистем по определенным шаблонам, чтобы с этим кодом могли работать и другие люди. Т.е. практически везде требуется усидчивый програмист реализующий рутинные задачи.
Естественно, олимпиадное программирование — не то, чем занимется «среднестатистический программист». Но вообще умение решать сложные задачи (а ещё лучше — быстро их решать) — вполне себе востребованное качество. Научить «реализации подсистем по определенным шаблонам» можно, научить решать сложные задачи — не совсем. Или даже совсем не. Уж точно не за полгода.

P.S. всё сугубо имхо, разумеется.
Это же спортивное программирование. Применение и других видов спортивной деятельности в реальной жизни практически нигде не требуется. Но это не отменяет того, что многие люди этим осознанно занимаются.
Полностью согласен, я и не хотел чтобы это звучало как ненужное занятие. Ребята молодцы!
Довольно недавно стал заниматься спортивным программированием (сам я, как говорится — промышленный разработчик) и первое, что пришло мне в голову после долгих пересдач решений — «как я мог так долго программировать с таким о*уенным количеством багов».

Быстро решать задачи не значит плохо решать, вы бы видели какое количество разнообразных, временами извращенных, тестов проходит каждое решение, да такое количество тестов не написано ни для одной части промишленного кода, а тестеров, как мы знаем, в софтверных компаниях довольно много.

Помню свои нескончаемые пинг-понги с тестерами, фиксил баг, отправил на тестирование, оказалось не все фиксил и так бесконечномного раз. Спортивные программисты пишут код без багов (ну хотя бы изо всех сил стараются писать без багов), для них это «челлендж».

Если бы мы — обычные смертныепромышленные программисты, писали бы наш продакшн код хотя бы наполовину как спортивные, то количество багов в релизах уменьшилось бы в разы!

Другое дело — абстракции. Нам легко поддается проектирование систем, определение иерархии и отношении классов/обьектов, правильный выбор паттерна, удобный интерфейс пользователя и т.д. Мы не можем писать весь наш код, заметьте, уродливонекрасиво и все запихивать в функцию main, это уже наш «челлендж».

Думаю смесь спортивного программиста с промышленным (у которого и то и другое «направление» получается одинаково превосходно) — будет отличать действительно крутого программиста от индусовне очень крутых.
В спортивном программировании высшего уровня с абстракциями тоже всё в порядке — нужно держать в голове сотни структур данных и алгоритмов по работе с ними, а также знать, что и когда следует использовать и каких результатов ожидать, плюс знать о том, что друг с другом ещё можно и сочетать. Думаю, после того, как знаешь пару сотен таких алгоритмов и структур данных, подучить всякие паттерны проектирования для такого программиста — раз плюнуть.

Но вот чего нет точно в спортивном программировании — это кода, который пишется для поддержки или масштабирования. Спортивный код всегда пишется под конкретную задачу, и, в отличие от промышленного, его очень сложно или даже невозможно бывает понять другому программисту, добавить/удалить функциональность или отмасштабировать.
И инкапсуляции тоже практически не бывает
По-моему скромному мнению, вы не понимаете разницу между алгоритмами/структурами данных и паттернами.

В голове можно держать хоть до хрена алгоритмов и структур данных, но это не дает гарантии, что при этом можно на отлично спроектировать, скажем, почтовый клиент или например, таск менеджер.

Архитектура ПО — это целый комплекс классов, разрабатываемых программистом, паттерны используются лишь для «правильной» их расстановки (при этом паттерны не покрывают весь проект, а только обобщенные/часто встречаемые «сегменты»).
В спортивном программировании очень много места для халтуры. Главное — быстро написать код. Он может быть жутко кривой, непонятный. Про комментарии я вообще молчу — отсутствуют как явление.
А еще в силу специфики проверки можно подсовывать неправильное решение. Например, задача, где нужно будет сортировать данные. Все знают, что будет тест, который делает qsort квадратным(обратно отсортированный массив). Однако, если перед сортировкой сделать рандомную перестановку массива, то qsort вполне будет логарифмическим, поскольку контртеста не найдется.
Или, к примеру, какой-то алгоритм про прямоугольники на плоскости имеет смысл, только если стороны не параллельны осям. Все понимают, что жюри впихнет тесты на такие прямоугольники, поэтому берут и поворачивают всю картину на 12,345 градусов.
Но согласитесь, это же не решение, а грубый хак, который в нормальной программе недопустим.
Но согласитесь, это же не решение, а грубый хак, который в нормальной программе недопустим

Не соглашусь. Так можно сказать, например, про любой эвристический алгоритм. И если алгоритм в 95% дает правильный ответ, а на практике вероятность того, что запрос пользователя попадет в эти 5% крайне мала, то алгоритм можно смело применять, как мне кажется.

Пример про quicksort некорректен, так как перемешать массив — это не грязный хак, а абсолютно нормальное доказанное решение. Worst case превращается в average case, а, как известно, быстрая сортировка в среднем работает за O(n log n).

Однако, вы правы, сделать такой контест, чтобы все решения участников, которые прошли тесты были правильными, не просто. В этом состоит большая доля работы жюри.
Видимо, у меня какое-то особое неприязненное отношение к эвристическим алгоритмам.
Пример про quicksort некорректен, так как перемешать массив — это не грязный хак, а абсолютно нормальное доказанное решение. Worst case превращается в average case...

В смысле? Worst case остается, просто переходит на другие входные данные. В случае, если у нас перестановки массива примерно равновероятны, ничего не меняется.
В реальной жизни разные перестановки массива не равновероятны, и в некотором приложении вполне может оказаться так, что довольно часто попадается worst case.
Если мы случайным образом перемешаем массив, то мы как раз сделаем перестановки равновероятными, а значит вероятность того, что алгоритм отработает за n^2, а не за n log n, становится крайне мала.
Вот вам картинка с сайта топкодера.
image
Небольшое пояснение — по горизонтали отмечено время работы программы, по вертикали относительная эффективность. Зеленые точки — решения ребят с топкодера (2 недели шло соревнование), желтая — решение программистов с зарплатой $120к в год.

Да, такие задачи далеко не везде есть, но все таки тут вопрос не в «скорости решения сложных задач», а способности их решать.
Прекрасная новость! Парням уже выслали инвайт на хабр? ;)
Есть подозрение, что если они захотят, они его и так получат ))
Полагаю, им есть чем заняться, кроме как писать комментарии на хабре.
Ага, скрываться от инвайта от Шойгу, например
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Горжусь своей страной и соотечественниками
Хочу поздравить КНУ Шевченка с сербром и 7 местом, ребята молодцы! Лично знаю всю комманду, смотрели сегодня трансляцию прямо с факультета кибернетики всей группой.
Будет ли полноценный разбор задач? В трансляции было коротко и непонятно.
Поздравляю ИТМО с очередной победой! Молодцы, ребята.
Судя по статистике олимпиадников в ИТМО готовят отлично.Очень интересно услышать отзыв о универе от обычных студентов.
Учился в ИжГТУ на бакалавриате, в ИТМО — в магистратуре. Всё что написано ниже — мои наблюдения. Говорю только про то, что видел сам.
Обычный университет. Субъективно, на ИТМО/КТУ/ВТ уровень качества образования чуть-чуть выше, но примерно соответствует ИжГТУ/ИВТ/ВТ. Субъективно, студенты учатся примерно одинаково: 1-3 толковых ребят, 5-7 середнячков, остальные — плохо.
Когда сравнивали приложения к бакалаврским дипломам почему-то у ИжГТУ оказалось больше оценок и курсовиков (направление одинаковое: 230100 ИВТ Вычислительные машины комплексы системы и сети.

А олимпиадники, как мне кажется, как и любые другие спортсмены имеют специальную программу подготовки к соревнованиям, огромное количество тренировок. На кафедре ВТ в ИТМО таких я не видел.
Думаю, стоит спросить именно студентов и выпускников кафедры КТ факультета информационных технологий и программирования, которая и занимается подготовкой олимпиадников. Потому что, судя по отзывам, обучение там очень сильно отличается от обучения на других кафедрах и факультетах.
Спасибо. В таком случае тут должны отписаться студенты вообще всех кафедр университета. Тепература в одной точке не показывает общей картины и никто не будет пытаться оспорить утверждение, что уровень одной кафедры никак не отражает уровень всего университета.
kokis спрашивал об обычных людях. Объективно, готовят достаточно хорошо, чтобы некоторые студенты кафедры ВТ успешно работали в компаниях типа Intel, Motorola и участвовали в Google Summer of Code (такие факты действительно есть).
И вообще есть мнение, что не только от кафедры зависит — нужны ещё студенты, которые хотят учится. На ФИТИПе их процент выше.
Я учился (3.5 года) в ИТМО на КТ. Как видно из длительности обучения, я один из тех, кто учился плохо (закончить, вероятно, смог бы, но как-то резко стало пофигу, к тому времени я уже работал два года и на очередную сессию просто не пошел). Но со статистикой «1-3 отлично, 5-7 средне и остальные плохо» более-менее согласен, в нашей группе из 40 человек примерно (может чуть лучше) так и было.

Учеба вряд ли чем-то отличается от остальных кафедр и факультетов, однако сравнивать мне не с чем. Поступление — да, отличается. Вначале читают (в мое время читали, может сейчас ситуация изменилась) полугодовой курс базового CS и параллельно пишется 6 несложных «контестов» типа того же ACM'а, но сильно упрощенного. В конце учебного года сдаются экзамены по физике, математике и представляется какой-то научный проект из области программирования (я писал визуализатор сортировки бинарного дерева на Delphi :)). Кто по сумме результатов проходит, тот и поступил. Ну и победители школьных ACM'ов, вроде, поступают без очереди.

Как-то так.
Очень рад за питерцев и пермяков с родного факультета, молодцы ребята!
Глядя на первую фотку хочется забрать у ребят компьютеры навсегда, не берегут себя.
Как бы Вы выглядели после 5 часов соревнований, да еще и под жутким эмоциональным напряжением (они все-таки были однозначными фаворитами, а это очень большая ответственность)
За пять часов так не исхудать. :)
Десять задач за пять часов… По полчаса на задачу в среднем, включая обдумывание и кодирование.

Такие показатели наводят на мысль, что по сути никакого «креатива» на таких олимпиадах нет и быть не может. То есть, существует некий общеизвестный конечный набор шаблонов решения подобных задач, и тренировка олимпиадников сводится к выработке умения быстро сводить задачу к тому или иному шаблону или их набору.

Ни в коем случае не хочу сказать, что это глупое или ненужное занятие. Но если я действительно прав, то ни о каком романтическом флёре, мол, мы первопроходцы, нестандартно мыслящие исследователи неизвестного, и речи не идёт. Люди — просто разогнанные молотилки, на скорость перебирающие заранее заученные методы решения в поисках подходящего.
НЛО прилетело и опубликовало эту надпись здесь
Проектирование архитектуры любой мало-мальски сложной системы — чистый креатив. Потому что подходов к решению задачи — море, даже если отбрасывать априори неверные и костыльные. У одного подхода свои плюсы, у другого — свои. Определение, какой подход лучше сработает в твоём случае, требует в первую очередь опыта и интуиции архитектора, а уже потом грамотного прототипирования и обкатки моделей, а также оценки имеющихся средств и сроков.

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

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

В мою бытность школьником и студентом олимпиады всегда позиционировались именно как соревнования, в которых проявляет себя чистый незамутнённый гений, могущий лишь благодаря преимуществу в интеллекте над одинаково информированными соперниками найти решение нестандартной задачи быстрее.
Эта же олимпиада выглядит скорее как соревнование методик подбора оптимальных кадров и обучения оных всем требуемым знаниям.

То, что эти трое парней — умные ребята, я под сомнение не ставлю. Но в их успехе это далеко не первый по важности фактор. Собственно, именно это и доказывает тот факт, что у ИТМО такие впечатляющие результаты. Что кадры не так важны, как методика их подготовки.
НЛО прилетело и опубликовало эту надпись здесь
У вас какое-то мистическое понимание работы интеллекта =)

У меня понимание интеллекта как способности адаптироваться к новым ситуациям. Олимпиады тем и отличались всегда от контрольных в школе, что в школе задачи были строго на знание школьной программы, а олимпиадные задачи — вещи отвлечённые, требующие самостоятельно проложить мостик от условия задачи к тем школьным знаниям, которые для решения этой задачи требуются. Поиск этого мостика — результат озарения, интуиции. Именно способность к этим озарениям олимпиады и должны проверять.
А олимпиада по программированию превращается из поиска людей, способных к продуктивному использованию интуиции, в бизнес, где, как в спорте высоких достижений, побеждает не тот, кто от природы одарённее, а тот, кто больше тренировался, надел костюм поэффективнее да сожрал стимулятор помощнее.
Я понимаю, почему это происходит. Но это идёт вразрез с духом олимпийского движения. Заметьте, что есть даже такое понятие «спортсмен-любитель». Подразумевается, что для него спорт — это хобби, а не основная деятельность. И именно такие спортсмены могут участвовать на олимпиадах. Но сейчас смысл и этого выражения исказился. Как спортсмены-олимпиадники, так и эти ребята — люди, которые живут только этим своим делом, для которых тренировки — постоянная составляющая жизни. От любительства тут осталось только название.

Короче, я бы не хотел работать с архитектором, который на вопрос о проекте «почему именно так?» отвечал бы «интуиция». У любого решения(проекта) должен быть четкий логический фундамент, «почему именно так».

Вы так шутите наверное? Придите в любой крупный проект, который начали без вас, и вы найдёте решения, которые лично вам покажутся странными. Задайте вопрос тимлиду или любому другому ответственному лицу, почему эти решения были приняты. И скорее всего получите ответ «потому что на тот момент эти решения казались наиболее правильными». Вам вряд ли покажут простыни выкладок, математически доказывающих верность этого и только этого решения. Программирование — не математика, это гибрид бизнеса и промышленного производства. Тут нет строго правильных решений, есть решения, которые были приняты исходя из имеющихся в конкретный момент времени данных и ресурсов.

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

В ИТМО есть не только отличная методика подготовки, но и отлаженная система поиска людей с потенциалом. И даже несмотря на это, далеко не все студенты КТ стали чемпионами мира.
Неправда ваша, на серьезных соревнованиях шаблонных задач не бывает. Вы можете сами попробовать решить пару сложных задач и убедиться в этом.

Вы не учитываете то что в команде 3 человека, это значит по 1.5 часа на задачу. Кроме того, задачи различаются по сложности, самые сложные из них обычно решаются мозговым штурмом и на одну такую может уйти и 5 человеко-часов.
Довелось учиться на курсе Андрея Станкевича по алгоритмам и структурам данных. Я скорее удивляюсь когда наши не берут первое место =)
По словам Шойгу, программистами предполагается комплектовать создающиеся в российской армии научные роты.

В частности, Шойгу поручил разыскать петербургских студентов, пять раз становившихся чемпионами по программированию. «Надо как-то с этими ребятами поработать, потому что они нам очень нужны», — отметил он, добавив, что Минобороны обеспечит их всем необходимым для плодотворной работы.

lenta.ru/news/2013/07/04/programmers/
Лучшие программисты так и мечтают поработать в российской армии… Иногда кажется, что наши политики и иже с ними, живут в параллельной вселенной.
>Лучшие программисты так и мечтают поработать в российской армии…
А с чего вы взяли, что таких среди них нет?
НЛО прилетело и опубликовало эту надпись здесь
Это объясняет их грустные лица.
А их оппоненты, тем временем, с хмельными лицами отчитываясь перед родителями и деканом о своём проигрыше, радостно бросают: "… да ффух — пронесло же! Чуть было не укомплектовали собой научные роты российской армии!"
Где Ваше чувство юмора, пользователь Хабра?

Просмотрев задачи и их разбор, я был очень впечатлён, насколько интересные и разносторонние задания предлагаются участникам. Любопытно узнать, где можно увидеть такие задачи, чтобы порешать их дома или в метро на коленке. Сборники за прошлые года есть?
Вот спасибо! Люблю, когда «мозг болит» после хорошего приложения усилий и знаний, о да!
Сорри, плюсануть нечем — не заслужил ещё.
Поздравляю,
не удевлен, так как ожидал именно их победу! И это уже не первый раз!!!
Мы (Россияне и Сакт-Петербуржцы) — Лучшие в мире!
Буду готовить сына к поступлению в ИТМО!
Не хочу вас расстраивать, но Гена Короткевич — например белорус.
Участникам соревнования требовалось показать глубокие знания ключевых трендов и возможностей применения аналитических технологий к обработке Больших данных – одной из ключевых движущих сил современной экономики и карьерных возможностей в ИТ-сфере.


Вот где люди берут такую траву, а?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий