Компания "Яндекс" и проект SnarkNews представляют

SnarkNews summer series - 2014

Running by Yandex
 

Описание системы TCM/Time.

Проведение турнира

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

По мере готовности участник посылает свои решения в тестирующую систему для проверки. При первой отправке решения по каждой задаче у участника имеется выбор - отправить задачу "в открытую" (в системе Яндекс.Контест - выбор способа отправки "втёмную", в системе ejudge - задача без префикса TC) или "втёмную" (в системе Яндекс.Контест - выбор способа отправки "втёмную", в системе ejudge - задача с префиксом TC) способом. В дальнейшем по данной задаче сменить способ отправки уже невозможно. После этого участник может продолжать работу над другими задачами. Результаты проверки посланного решения будут доступны участнику немедленно по завершении проверки.
При отправке решения "в открытую" участнику сообщается, зачтено решение или нет. Если решение не зачтено, сообщается тип ошибки и номер теста, на котором произошла ошибка.
При отправке решений "втёмную" решение проверяется только на тестах из условия. Если решение не проходит тесты из условия, сообщается тип ошибки и номер теста, на котором произошла ошибка. Если решение проходит тесты из условия, задача условно засчитывается. Повторная отправка решений по этой задаче становится невозможной. При этом итоговый результат проверки задачи становится известен только после окончания соревнований.

Решения участников запускаются под OS Linux. Решение проверяется путём запуска на наборе тестов, который недоступен участникам и является одинаковым для всех участников. Решение засчитывается в том случае, если оно выдаёт верные ответы на все тесты. Тестирование производится автоматически, поэтому программы должны в точности соблюдать форматы входных и выходных файлов, описанные в условии каждой задачи. Если не оговорено отдельно, все входные данные предполагаются корректными и удовлетворяющими всем ограничениям, указанным в условии задачи.

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

СообщениеНомер теста сообщается?Когда возникает при сдаче "в открытую"Когда возникает при сдаче "втёмную"Возможная причина
OKнетрешение зачтенорешение прошло тесты из условияпрограмма на соответствующем наборе тестов работает верно
Compilation error нет компиляция программы завершилась с ошибкой компиляция программы завершилась с ошибкой 1. в программе допущена синтаксическая или семантическая ошибка
2. неправильно указан язык
Wrong answer да ответ не верен ответ на один из тестов из условия не верен 1. ошибка в программе
2. неверный алгоритм
Presentation error да программа проверки не может проверить
выходные данные, так как их формат
не соответствует описанному
программа проверки не может проверить
выходные данные на одном из тестов из условия, так как их формат
не соответствует описанному
1. неверный формат вывода
2. программа не печатает результат
3. лишний вывод
Time-limit exceeded да программа превысила установленный
в условии лимит времени
программа превысила установленный
в условии лимит времени на одном из тестов из условия
1. ошибка в программе
2. неэффективное решение
Memory limit exceeded да программа превысила установленный
в условии лимит памяти
программа превысила установленный
в условии лимит памяти на одном из тестов из условия
1. ошибка в программе (напр., бесконечная рекурсия)
2. неэффективное решение
Run-time error да программа завершила работу с ненулевым
кодом возврата
программа завершила работу с ненулевым
кодом возврата на одном из тестов из условия
1. ошибка выполнения
2. программа на языке C/C++ не завершается оператором return 0
3. ненулевой код возврата указан явно

При возникновении ошибки Compilation error программа не запускается ни на одном тесте. При возникновении ошибок Run-time error, Memory limit exceeded, Time-limit exceeded вывод программы не проверяется.

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

Первыми тестами в наборе тестов всегда являются тесты из условия задачи. Тесты идут в том же порядке, в котором они приведены в условии задачи.

Подсчёт промежуточных и окончательных результатов

Участники ранжируются по количеству принятых задач. Участники, решившие одинаковое количество задач, ранжируются по суммарному времени решения.

Суммарное время решения определяется как сумма времён решения и "бонусов за сдачу втёмную" (если задача была сдана "втёмную") для каждой принятой задачи.

  • Время решения задачи определяется как время в секундах от начала соревнования до момента посылки решения, признанного правильным, плюс 20 штрафных минут за каждое забракованное решение в случае, если задача сдавалась "в открытую".
  • За сдачу задачи "втёмную" со времени решения снимается
    ((количество_не_решивших) * (продолжительность_контеста в секундах)) / (количество_участников) секунд.
Суммарное время решения выводится с точностью до секунды. Задачи, не признанные решёнными к моменту окончания соревнования, никакого вклада в суммарное время не дают (в том числе, и в виде штрафов за забракованные решения).

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

По завершении отведённого на турнир времени проходит перетестирование задач, отправленных "втёмную", на полном наборе тестов, совпадающем с набором тестов для тех же задач, проверявшихся "в открытую" ("системные тесты"). Результатами по данным задачам становятся результаты после системных тестов.

В таблице итоговых результатов, в отличие от таблицы текущих результатов, задачи, отправленные "втёмную" и прошедшие системные тесты, обозначаются зелёным знаком V (V), а задачи, успешно отправленные "втёмную" и не прошедшие системных тестов, обозначаются красным знаком X (X).

Финальным результатом турнира является результат после завершения системных тестов.