вторник, 20 октября 2009 г.

Западно-Сибирский четвертьфинал'09

Началось всё, что естественно, с открытия :) Мы были рады снова видеть Рояка. Он, судя по всему, тоже был рад, потому что объявил, что получил из Питера ключи компиляции С++ и Java, которые используются на NEERC, и применил их в тестирующей системе.. А сколько радости было в его голосе, когда он сказал, что полученные параметры не содержат ключей для расширенного стека Java!.. - гораздо больше, мне показалось, чем негодования среди нас :)

Собственно контест начался с того, что у нас на компе не запустился Eclipse.
Ничего, мы пересели на другой, где желаемая среда также не соизволила стартануть. В диспетчере задач одно из двух ядер нашего ПК было полностью загружено антивирусом, что не понравилось нам, и мы попросили ассистента, присутствовавшего в аудитории, антивирус выключить (пользовательских прав, как это обычно бывает, было недостаточно). Нам ответили, что не выключат, ибо мы можем назапускать вирусов и вообще, нехорошо это – антивирус выключать. К этому моменту контест шёл уже минут 5-10, мы пишем на непривычном нам С++ решение и сдаём первую задачу. Про то, что в нашей панели участника в тестирующей системе было указано практически для каждой задачи, что она либо уже сдана нами, либо мы сделали по ней неуспешные попытки, мы даже не сообщили жюри – думали, что такой косяк у всех, и что это будет исправлено. Забегая вперёд, можно сказать, что так было только у нас (либо ещё у нескольких команд, которые так же, как и мы, на это забили).

Тем временем, у нас внезапно запустился Eclipse – оказалось, что он всё это время потихоньку стартовал, чем вызывал бурное негодование со стороны антивируса. Нашему счастью не было предела :) Мы быстренько закодили ещё одну задачку и получили RE#10. Что ж, подумали мы, может, что-то не так у нас. Поскольку возможности распечатать решение и проанализировать его, не занимая комп, не было, мы временно забили на упавшую с RE задачу и написали ещё одну. Submission – и у нас RE#15. Что за ерунда, думаем мы. Может быть, у них корявые тесты?

Делаем валидацию ввода (а программе требовалось считать лишь одно положительное число) – если чтение не удалось, то считаем, что считали «1». Отправляем с полной уверенностью, что получим WA#15. Пришедший RE#7 стал полным сюрпризом для нас – мы в принципе не могли придумать объяснения происходящему.

На наше сообщение к жюри с пожеланием проверить тесты получаем ответ о том, что им, жюри, не ясны основания для подобной просьбы. Хорошо, мы начинаем писать подробное сообщение с номерами тестов, на которых наши решения ловили RE и в каких ситуациях. Тут к нам подходит Рояк, на лице которого читается «опять эта хренова Связь чем-то недовольна». Мы всё подробно ему объясняем, он уходит. Мы смотрим рейтинг и остаёмся в недоумении – команда Алтайского политеха сдаёт эти же задачи с плюсов, а они, как и мы, пишут на Java….

….и вот написана ещё одна задача, которая так же получает RE. Здесь нужно сказать, что у нас впервые за последние несколько лет возникла мысль о том, что в сложившейся ситуации (у нас одна задача, мы еле-еле входим в двадцатку, нас обходит вторая команда нашего ВУЗа) нужно постараться, чтобы хотя бы просто пройти на NEERC.

Мы переписываем одно из трёх готовых на тот момент решений на С++, и она тут же сдаётся – то же самое и с двумя другими. Я заканчиваю очередную задачу, получаю WA. Пока думаю над возможными причинами, Антон пишет ещё одно решение – уже сразу на С++. До меня доходит, что я написал не так, исправляю, и получаю RE на более позднем, чем предыдущий WA, тесте – верный знак, что программа готова к тому, чтобы быть переписанной Антоном на С++, что он и делает.

Несколько сданных за небольшой промежуток времени задач взбодрили нас; взбодрили принесённые девушками вкусные бутербродики и, конечно же, взбодрил Рояк, сообщивший, что в их тестирующей системе была найдена ошибка, в результате которой решения на Java, не закрывающие после работы входной файл, могли получать RE на произвольном тесте. Успокоив нас обещанем rejudge'а, Рояк откланялся, и мы продолжили решать.

Вряд ли мы удивились, когда снова получили RE на джавовском решении. Просто переписали его на С++ и сдали, сказав Рояку, что, не смотря на его слова, проблема, по видимому, ещё не решена.
Остаток контеста прошёл вполне нормально – мы писали на С++ :) Под конец выяснилось, что последний RE мы получили по другой, нежели предыдущие, причине – формат одного из тестов не соответствовал описанному в условии. А уже после контеста до нашего сведения дошли другие интересные вещи.

Во-первых, оказалось, что косяк в их тестере нашёл наш Скорж, причём для этого он буквально построчно сравнил наше упавшее решение с зачтённым решением алтайцев. Сравнение, как можно догадаться, показало, что алтайцы, в отличие от нас, входной файл закрывали. Прилежность – штука хорошая :)

Во-вторых, оказалось, что параметры командной строки для запуска решений на Java не изменились с предыдущего НГТУшного контеста и содержали все необходимые ключи для того, чтобы программы на Java не чувствовали себя стестнёнными небольшим объёмом доступной памяти. (Да и вряд ли они могли бы быть изменены – для этого пришлось бы пересобирать тестирующую систему, и кто знает, к чему бы это привело :) ) В свете этого, совершенно непонятно, что заставило Рояка сказать на открытии то, что он сказал.
Вот так нескучно прошёл очередной, и, что печально, последний для нашей команды Западно-Сибирский четвертьфинал :)

оригинальный пост: http://vkontakte.ru/note1356659_9679528

2 комментария:

  1. очередной раз удивляет самоуверенность команд, которые не используют пробный тур дря проверки тестирующей системы

    ОтветитьУдалить
  2. nikodim, дело в том, что пробного тура здесь тоже традиционно не было. Надо было это добавить в отчет. Такой вот четвертьфинал. И пишут его иногородние по инету (наверное единственный из всех четвертьфиналов NEERC), а новосибирские участники - онсайт, то есть иногородним дана некая фора - на онсайте нельзя набить заранее шаблон, нет доступа в инет и, конечно, лишь один компьютер на команду. Хотя, надеюсь, участвующие по инету команды соблюдают принципы fair-play.

    ОтветитьУдалить