Всем доброй ночи. Пишу я эти строки ночью, поэтому такое пожелание. Хочу представить вашему вниманию несколько улучшений на Codeforces.
1. Теперь, нажав на ячейку в таблице результатов в истории посылок участника по задачам вы можете обнаружить ссылку исходный текст его решения. Таким образом, у вас есть прямая возможность посмотреть код любого пользователя по любой задаче. Конечно, протокол тестирования с тестами там тоже доступен. Там сейчас не очень удобно смотреть разные решения одного человека по одной задаче - что-нибудь попозже придумаем.
2. Теперь все прошедшие контесты имеют политику открытых тестов. Конечно, вы должны помнить о лицензии при просмотре любых тестов на Codeforces :)
3. Вердикт "Ошибка представления данных" (так же известный в мире как Presentation Error) признан устаревшим, трудно формализуемым и никому не нужным. Известно, что никто в мире не может дать правильный ответ на то в чем разница между Wrong Answer и Presentation Error. У каждого свое мнение, а чекеры зачастую принебрегают правилами хорошего тона в этих вопросах. Без Presentation Error все становиться формальнее. Короче, теперь если ваша программа уложилась в time limit, memory limit и корректно завершилась, то вы получите либо Accepted, либо Wrong Answer. Желаю вам первого. Пользуясь случаем, я объявляю войну Presentation Error-у и буду стараться его искоренять всюду, и побуждать это делать и вас :) Скажем свое решительное нет загрязнению окружающей среды, распространению детской порнографии, Presentation Error-ам и милитаристической политике отдельных государств!
4. В интерфейсе контеста появилась новая вкладка "Запуск". На новой странице вы можете запустить свое решение, скормив ему некоторый тест на стороне сервера. То есть после нажатия кнопки "Запустить" ваш код вместе с тестом уйдет на сервер, там протестируется, а его вывод вернется к вам на страницу. Не обновляйте страницу пока вам не пришел ответ на ваш запуск. Поле "Вывод" обновится автоматически.
Вроде бы все. Желаю и вам трудовых свершений,
MikeMirzayanov
UPD:
5. Еще одно улучшение (забыл о нем в первой версии поста). Теперь, если ваше решение не прошло первый тест (а он всегда совпадает с тестом из условия), то ваша попытка полностью игнорируется. Например, вердикт "Неправильный ответ на тест 1" - это именно тот случай.
Задачу ты посылаешь,
И вновь получаешь
Presentation on test 2!
Я пару раз натыкался на такое например на тренировках ИТМО, там PCMS2 выдавал SV
в целом, с точки зрения участника, вердикт-то полезный. но с точки зрения автора задачи хороший чекер иногда сложно написать - либо не хочется тратить время, либо сидишь и сам думаешь "а что в такой ситуации вернуть - PE или WA?"
ну убрал и убрал, в любом случае время покажет насколько это было верное решение. в конце концов будут аккуратнее участники данные выводить ))
Может и не стоит давать такие задачи, где даже checker не в состоянии нормально прочитать/вывести ответ? Я понимаю, что Ваша точка зрения - скорее на стороне автора checker'a , которому просто лениво нормально формализовать формат вывода на столько, чтобы отличить WA от PE. Но PE - это ведь всё таки помощь участнику и он будет только рад, если ему смогут указать на его ляп.
По поводу предложенной задачи - синтаксический анализ не занимается проверкой семантики ответа. Его задача - выделить лексемы по определенным правилам, а не пытаться в полной мере понять - корректный ли для данной задачи ответ. Исходя из этого мне кажется, что если формат ответа не соблюдён (пусть даже в этом и сложность задачи) - то корректно было бы выдать PE.
Ошибки типа PE или RE достаточно оптимистичные и обычно быстро отлавливаемые.
Программа может коррекктно работать, но выводить YES вместо yes.
Это WA или PE? Я уверен, что сейчас найдется стопицот людей, которые скажут, что это WA, и столько же, что это PE.
Это показывает, что вердикт PE неоднозначен, значит, лучше от него отказаться, дабы лишний раз не путать участников. Проект Codeforces очень лояльно относится к соревнующимся, но при это удовлетворить желания абсолютно всех, разумеется, не в состоянии. Так что терпите, друзья. В конце концов, решение уже принято, и я так понимаю, что обжалованию не подлежит.
Теперь становится очень логично. Вердикт WA означает, что вы вывели то, что никак не может быть ответом на задачу. Если ответ - число, то согласитесь, что строка не может быть на него корректным ответом никак :) по этой логике, такой вывод - чистое WA
Пример 1: Просили вывести число, не превосходящее сто тысяч (длину ответа), а затем сам ответ; и вот в ответе участника первое число оказалось равно миллиону. Это WA или PE?
Пример 2: Если ответ есть, выведите число. Если нет, выведите “No solution”. Когда вместо числа выведено No или наоборот, это WA или PE? Жюри могло об этом не подумать, если ответа No solution, скажем, в задаче вообще на самом деле не бывает.
Пример 3: При делении на 0 на GCC можно получить вывод 1#IND00. А просили вещественное число, причём экспоненциальная форма (+1.026E+008) допускается. Это WA или PE?
Пример 4: Ну и просто: просили вывести целое число. В ответе участника оказалось число, не влезающее в int64. Это WA или PE? Жюри могло об этом не подумать, если уверено, что ответ влезает в int32.
Вообще, я за сохранение вердикта Presentation Error, но с как можно более формальным его объяснением, если он есть, в правилах каждого контеста.
Про примеры:
1) PE. Сказано непревосходящее 10^5, значит надо непревосходящее 10^5.
2) WA. Так как сказано No solution или Число.
3) Вероятно, PE, так как на большинстве соревнований оговаривается про культуру (. или ,) и формат (научный или нет)
4) Если не указали, что ответ не должен превосходить int64, то WA.
Вот просто случай из жизни. Даным-давно писал несложную задачу в архиве. Там на надо YES или NO было вывести. И в строке cout << "NO" вместо "O" я написал 0(ноль). Посмотрите на клавиатуру - они рядом. А в студии выглядят почти идентично (кто не верит, откройте и проверьте), так как там ноль неперечеркнутый. Чекер был написан видимо просто на сравнение строк и я получал WA, а не PE. После долгого дебага я решил воспользоваться старой методикой и написать с нуля. Ну там я уже написал нормально букву O, сдал задачу. Сидел потом сравнивал коды. Так как идея решения не поменялась, то коды были почти идентичны. Долго я не мог понять в чем баг. Помог сторонний человек, который сравнил коды через файловый менеджер. Вот здесь PE был бы очень кстати. Ладно архив задач, а вот если такая фигня случается на реальном, а не онлайн контесте, да еще и на простой задаче, то это ой как ломает контест.
Для себя я понял проблему 2 от Gassa так: в задаче ответ всегда есть, но в условии сказано что можно выводить No solution, если участник так считает. (Ну и с точностью наоборот возможна ситуация). Ну так вот, если он таки выведет No soulution, то это WA. Потому что формату выводу соответсвует, но решение дает неверный ответ.
Если у вас есть общая позиция на счет вердика PE, то выскажите ее, вместо попытки меня зачеленджить.
Автору задачи только нужно рассмотреть несколько условий. А участнику, пожалуй, интересней будет и меньше ненужных проблем в процессе решения.
Но тут Михаилу решать.
Я кстати на прошлом матче словил WA, когда не закоментил вывод в файл)
P.S.
В принципе можно и без PE, но все тонкости неплохо бы вынести в отдельную тему со ссылкой с главной страницы а то не все в курсе секретов CF, таких как %lld, например.
Нет справки или FAQ, как таковых в одной теме .
Ну вот я задумался, не повысить ли оно нагрузка сервера?
Надеюсь все будет нормально на рунде сегодня.
UPD: Во время контеста увидил, что нет :)
Мысль была найти в нём ещё баги, пока участник исправляет баг на простом тесте. Да и вообще, когда перепосылают зачеллендженное тобой час назад решение, хочется иногда не только посмотреть на новый код, но и сравнить его со старым, посмотрев и на старый тоже.
И сегодня никаких проблем на раунде с загрузкой сервера не возникло, браво!
А по поводу 3, мне кажется, я могу предложить формальное определение неверного формата вывода. PE должен получать вывод, который не будет являться верным ни при каком возможном корректном вводе. Но я согласен, что даже такое различение PE и WA в отдельных случаях может сильно нагружать того, кто будет писать чекер, поэтому, раз на подготовку каждого отдельного раунда Codeforces вовсе не находится десяти человек и полугода времени, полный отказ от вердикта PE поддерживаю. Но вот на ACM пускай остаётся.
As I have seen , there is a unique number assigned to each solution, but there is no way to access the solution using that number.
or may be i don't know :/
I found a way of doing this(little tedious)
I use opera(but i think will work on any browser):
----------------------------------------------------------------
1.Open status page.(of any previous contest )
2.Open its source code.
3.Find "<a class="view-source" title="Source" href="#" submitId="234">234</a>"
4.Replace the number with desired id.
5.Apply changes.(Here opera comes in handy).
6.See original page will have that id now.
7.Click on it and wallah!!!
Помню как система выдавала мне PE вместо WA, сорвала мне весь тур :-(