суббота, 8 декабря 2012 г.

Как слить контест или "Первая личная олимпиада 2012/2013"

   Совсем недавно закончилась первая личная олимпиада этого учебного года (Результаты, задачи).
   В последнее время я чувствую себя не таким уж и дном, поэтому настрой на этот контест был вполне боевой. 
   Началась олимпиада для меня довольно странно. Прочитав задачу A, я быстро написал какую то лажу (ну как быстро, за минут 20 сдал, т.к. у меня начал жутко тормозить настольный компьютер и пришлось быстро включать ноут).
   Задача B мне понравилась. Я довольно быстро додумался до главной идеи, но окончательная реализация (на 36 баллов) была дописана мною за 2 часа до конца контеста.
   Прочитав задачу C я немного удивился, т.к. там был капитан(даже легче чем A). Однако, я до сих пор не разобрался почему, у меня не проходит 1 тест, из-за чего за эту задачу я получил 98 баллов, что меня не сильно расстроило.
   Задача D самая клевая задача контеста. Я не придумал полного решения, но за 1.5 часов до конца, у меня была какая то идея, проходящая группу тестов на 60 баллов. Я уложился в это время, реализовав почти то, что придумал(оказалось, что я не совсем правильно понял условие). Однако, посмотрев на результаты, я увидел что у меня за эту задачу 5 баллов.

  Погрузившись в грусть, тоску и архив с тестами жюри я начал искать баги в задачах B и D. Каково было мое удивление, когда я вспомнил, что хотел "не забыть запилить long long в задачу D". Впиливаю long long - проходить 12 тестов, т.е ровно те 60 баллов, которые я планировал.

С задачей B я разбирался дольше. Однако обнаружив свою ошибку начал сильно негодовать из-за своей криворукости. Баг заключался в том, что у меня существовала функция myFind(...), которая возвращала -1, если не находила нужный элемент в массиве. Однако при проверке, нашелся ли данный элемент в массиве, я написал следующую строчку:
if (myFind(..) == 1) {//do something}
После чего без сомнений признал этот баг самым нелепым за всю мою историю сливов контестов.

Итог - 30 место с очень низким количеством баллов. За задачу B обидно...

//P.S. Через час после того, как я написал пост, на Codeforces появился этот контест в разделе "Тренировки". Отправив свое решение по B с исправленной -1, я получил вердикт "Полное решение"

Комментариев нет:

Отправить комментарий