Продолжение погружения в мир спортивных программ уже на ваших экранах.
Теперь самое вкусное.
Раньше я ходил вокруг да около, но теперь пришло время добраться до сути.
Посмотрим, как пройдет одна из экскурсий, что останется за эти 5 часов азарта и творчества.
Сегодня будет много интересного.
Для тех, для кого эта статья будет первой в серии: Первая статья посвящена созданию задач.
Вторая статья посвящена системам тестирования.
Третья статья о работе оргкомитета.
Тур «Всесиб» обычно начинается с пробного тура.
Есть две распространенные задачи, которые используются в этом качестве уже несколько лет: сумма чисел и Сумасшедшее Жюри.
Это сделано просто для того, чтобы команды привыкли к месту, к настройкам ПО и всему такому.
Некоторые команды очень довольны и решают обмануть систему, написав вместо зонда шаблоны алгоритмов.
Напрасно, напрасно.
Обычно на таких олимпиадах перед самим очным туром проводится циклическая смена команд за компьютерами и все шаблоны оставляют соперникам.
Точнее, не остаются, потому что папки предусмотрительно очищаются оргкомитетом.
Также целью пробного тура является проверка работоспособности всех механизмов Олимпиады.
Собственно, первые пару раз на 8 Всесибе усудья располагался именно во время квалификации.
Это уже вызвало у меня не очень приятные ощущения, но об этом позже.
Жюри обычно собирается за полчаса-час до начала тура.
Опять же все задачи прописаны и все условия просканированы на ужас-ужас-ужас.
Самое интересное здесь происходит, когда вопросы есть, а отвечающего нет рядом.
Так вот, в последнем запуске Всесиба по исследовательской задаче у Миши Дьякова возник резонный вопрос, замкнуты ли его геометрические примитивы( условие задачи для интересующихся ).
Все бы было хорошо, просто спроси об этом Мишу по телефону, конечно, разбудив его.
Примерно через час Миша появился на месте жюри и под громкий смех всех членов судейской бригады описал всю гамму своих чувств в тот момент. Примерно за 15 минут до начала раунда командам разрешается пользоваться своими компьютерами.
Шаблоны уже можно заполнять, так как логин для команды постоянный на протяжении всего турнира.
Примерно через 10 минут после этого оргкомитет вручает запечатанные конверты с заданиями на этот тур.
Все ждут разрешения из комнаты жюри (куда участникам строго запрещено входить и даже смотреть).
Помашите клетчатым флагом — конверты рвутся, быстрые программисты садятся быстро кодировать, и у жюри начинается веселое времяпрепровождение.
Уже на второй минуте начинаются вопросы жюри через тестовую систему.
Около 50 процентов исключаются с комментарием «Без комментариев».
Часто даже ответ на простой командный вопрос выносится на голосование, так как может потребоваться внести поправки в постановку задачи.
Но есть и забавные моменты.
Так, на одной из олимпиад (в ВКИ, кажется) кто-то задал вопрос, нужно ли сопровождать исходный код программы комментариями.
Интересно, как отреагировал участник на разумный ответ «Без комментариев» и стал ли он удалять задокументированные куски кода.
Наука этого не знает. Но науке известен весёлый ступор жюри, когда одна из команд на очном туре не знала, что такое тор и с чем его едят (а едят его обычно с чаем в виде бублика) ).
Весь мыслительный аппарат был направлен на то, чтобы объяснить это.
Кто-то зашёл на вики.
Кто-то начал изображать тор в красках.
Саша Киров оказался быстрее всех и убежал с аналоговой бумажкой, объясняя незадачливой команде кусок геометрии.
Курганские математики никогда не теряются.
Все в порядке, если ничего не сломается.
Но ничего просто не может сломаться.
Лучше всего, если задача будет нарушена.
Внезапно был получен некорректный тест, не соответствующий условиям, либо формат входного файла был немного несоответствующим.
Сначала на жюри обрушиваются потоки гнева со стороны всех команд, на которые выливается де-факто правильное решение.
Эти потоки затем передаются лицу, ответственному за тесты.
Если все плохо и все сломано, то тест снимается и все решения отправляются на повторное тестирование.
Команды, конечно, этому не очень рады, но каждый имеет право на ошибку.
Так что иногда кто-то получает сразу пять плюсов за задание.
Хорошо, что хотя бы за дополнительные преимущества не начисляются штрафные баллы.
И самое страшное, когда что-то случается с системой тестирования.
И снова на ум приходит наш бедный-бедный усудья.
Система с красивым лицом, ненавязчивым включением ajax и продуманной архитектурой.
Она просто не выдержала нагрузки.
На полуфинале школьной олимпиады, когда такое возникло впервые, мы даже не знали, что делать.
В этот же день вылетел центральный роутер университета и 3 команды из ФМС, написавшие задания позже остальных команд (на самом деле для прохождения отбора им было важно только количество заданий) сдали задания благодаря гению технической мысли - флешконету.
Нам с Мишей это настолько вошло во вкус, что в аудитории участников мы нарисовали на доске окошко браузера и там своевременно отображалось количество поставленных задач.
Это эмуляция сервера.
В очном туре все было куда печальнее.
Тестировщик впадал в нокдаун, поднимался стараниями написавшего очередной патч Андрея или выводил его из комы и снова ложился спать под давлением кучи отправленных задач.
Была даже шутка, что усудж — уникальная система, поскольку опирается на мышечную силу автора.
Итак, вот оно.
Мы помним, что наш клиент хорошо масштабируется.
В жюри целый терминальный класс, поэтому было поднято еще несколько экземпляров тестера и веб-морды.
Чтобы защитить компьютеры от атак на них, были вывешены эпические таблички «Тесты Machinko» и «Веб-сервер Machinko».
Я лично их, увы, не видел.
Обширный путь не дал желаемого результата.
Как оказалось, балансировщик нагрузки сам по себе значительно улучшил производительность.
Жемчужный шаман Саша Фенстер написал на коленке скрипт случайной балансировки за 5 минут. Стало немного лучше, система даже продержалась 5 минут. К тому времени участники уже кипели.
Используя свою наглость и административный ресурс, я засыпал своих знакомых из жюри в ICQ вопросами «когдаЭ» и «кагдилаЭ», остальным командам тоже не было скучно.
Кто-то от всей души написал в вопросах жюри незабываемое «Спасибо членам жюри за поистине феерическую работу системы тестирования».
Татьяна Викторовна на это отреагировала без колебаний: «Коту доброе слово приятно =)» Так они и решили.
Тем временем шоу продолжалось с участием жюри.
Андрей пытался поднять свою систему.
При этом мы хотели попробовать обновить старую систему, но перл на сервере нашего факультета обновился, и система не поспевала за временем.
В итоге к вечеру Миша Калугин и Алексей Романенко его выгнали, но жюри проголосовало за другую систему тестирования.
Но об этом позже.
Пока творился весь этот бардак, Андрей Лопатин в углу на своем ноутбуке с флэшки развернул собственную систему тестирования, выложил туда все тесты, проверил решения, поправил тесты и тихо-мирно сказал, что произошла ошибка.
система тестирования.
В итоге, по абсолютно форс-мажорному решению, через 3 часа после начала тура этот тур все-таки начался.
Ну я потом прошел, слава богу, без таких проблем.
Второй тур также был написан по системе Лопатина.
Во время второго тура среди жюри тоже было немного скучно.
Лопатин, Станкевич и Гозман (каждый с таким же интеллектом, как и 4 мои команды) решили сыграть Всесиба.
Мы сели за один ноутбук и с улюлюканьем и шутками принялись решать тур.
В итоге 5-й тур был взят за 1,5 часа.
Решения жюри были исправлены и улучшены, а в тестах была обнаружена пара ошибок.
Это сила разума.
Что ж, мы разобрались, что происходит во время первой части тура.
В конце начинается веселье.
После 4 из 5 часов тура рейтинг замораживается.
Таким образом, вы можете знать лишь то, насколько вы сами решили на данный момент. Некоторые команды хитро используют этот трюк, но об этом я расскажу в статье о командной игре.
Если раунд прошел без задержек, то через 5 часов после старта все заканчивается и команды отправляются отдыхать.
Но если случились сбои, то жюри может добавить к раунду несколько минут, которые могут стать решающими (так однажды наша команда благодаря 20 бонусным минутам сумела вырвать 3-е место в вузе в отборочном туре, когда в с диким угаром написал то, что придумал за 5 минут до алгоритма предварительного финиша).
Далее обычно следует небольшая пауза (например, чтобы поесть) и затем анализ поставленных задач.
Сначала это неофициально.
Команды рассказывают друг другу, какие грязные хаки они использовали, чтобы найти решение, почему задача не удалась на 9-м тесте и как они могли бы ее обойти, если бы в детстве были немного умнее.
И тут на сцену выходит великое и могущественное жюри.
Каждый человек представляет одну-две задачи, участники задают умные вопросы и получают столь же умные ответы.
Так и должно быть, хотя иногда разговор заходит довольно далеко и дискуссию приходится прерывать.
Во время обзоров также часто случаются забавные вещи.
Начнем с того, что человек может выйти рассказать то, что не входит в его задачу.
Во Всесибе, конечно, не так, но на каком-то школьном туре (почти полуфинал сборной России) было именно так.
На разборе осталось всего три человека из жюри: я, Миша Городилов и Ваня Корниенко.
Ну, мы разбросали между собой 9 задач и начали общаться.
Первая срыв случилась с Мишей.
Он около часа объяснял тренеру одной команды, как написать быстрый аналог связанных списков на массивах в Паскале.
Дети поняли уже через 10 минут, а оставшиеся 50 минут Миша и тренер пытались найти взаимопонимание в терминологии.
Хорошо, что произошла такая задержка, потому что мы с Ваней нашли одну проблему, решения которой ни я, ни он не знали.
У нас был только приблизительный набросок алгоритма.
В результате мы, как славные выпускники Курганской математической школы, смогли за полчаса самостоятельно вывести этот алгоритм и доказать его сложность.
А потом методом «камень-ножницы-бумага» определяли, кто пойдет это рассказывать, опасаясь повторить опыт Миши, мучившегося в это время у доски.
Иногда также неожиданно увидеть автора задачи.
На Всесибирских олимпиадах у «старичков» иногда даже устраивают что-то вроде соревнования — угадать, кто какую задачу написал.
Так вот, с этим связана еще одна забавная история.
Войдя в состав жюри, Миша Калугин начал подрабатывать фотографом во время гастролей.
Зеркало есть, и руки вроде тоже, так почему бы не пройтись и не пощелкать.
Это не освобождало его от ответственности за проблемы с письмом.
Итак, вот оно.
Разбор задач, Михаил выходит к доске.
Голос из Томска: «Блин, даже их фотограф решает проблемы!» Занавес.
Вот как проходит типичная экскурсия по Всесибу.
Без радости и счастья это невозможно.
Но все вышеперечисленное редко включается за один раз, иначе Открытый Кубок КВН нашего университета мерк бы рядом со Всесибирской олимпиадой.
За предоставленные хорошие воспоминания хочу сказать спасибо Мише Калугину, Коле Куртову, Толе Петрову, Мише Городилову, Саше Кирову, Наташе Поповой и немного себе.
В следующих выпусках я вернусь к своей привычной роли участника, кодера, игрока и расскажу, как проходят тренировки и туры для команд. Теги: #олимпиады по программированию #acm icpc #НГУ #спортивное программирование #спортивное программирование
-
Десять Лучших Докладов Dotnext 2019 Москва
19 Oct, 24 -
От Идеи До Реализации. Часть Первая – Провал
19 Oct, 24 -
Глобальный Сброс
19 Oct, 24 -
Умный Дом Для Курочки Рябы
19 Oct, 24 -
Основная Причина, Почему Не Linux
19 Oct, 24 -
Мой Любимый Редактор Высшего Уровня
19 Oct, 24