Logo

SnarkNews on Яндекс.Алгоритм - 2013

General Sponsor
 

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

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

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

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

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

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

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

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

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

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

Задачи, отправленные "втёмную" и прошедшие тесты из условия, во время турнира помечаются в таблице особым знаком. При этом текущее положение участников рассчитывается из предположения, что все задачи, отправленные "втёмную", впоследствии будут приняты.

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

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