Оценивающие программы

From EjudgeWiki
Revision as of 13:58, 22 August 2008 by Cher (talk | contribs)

Навигация: Главная страница/Система ejudge/Оценивающие программы

Оценивающая программа предназначена для выставления оценки за решение участника при нестандартных системах оценивания. В стандартных системах оценивания KIROV или OLYMPIAD общее число баллов за задачу вычисляется суммированием числа баллов, полученных за все пройденные тесты. Дополнительно ejudge поддерживает выставление специальной оценки про совпадении множеств тестов. Тем не менее в более сложных ситуациях встроенных возможностей системы может не хватить.

На вход оценивающей программы подается информация о результатах прохождения тестируемой программы на всех тестах. Оценивающая программа должна на основании этой информации выдать на выходе балл, в который оценивается решение. Входные данные подаются на стандартный поток ввода и имеют следующий формат:

  • Первое число N (N > 0) целое и задает количество тестов, на которых была запущена тестируемая программа.
  • Далее идут N троек чисел R S T.
    • Целое число R - это результат выполнения тестируемой программы на данном тесте.
      • 0 - OK (тест пройден)
      • 2 - Run-time error
      • 3 - Time-limit exceeded
      • 4 - Presentation error
      • 5 - Wrong answer
      • 6 - Check failed (ошибка проверяющей системы)
      • 12 - Memory-limit exceeded
      • 13 - Security violation
    • Целое число S (S >= 0) - это балл, который получила тестируемая программа. Это 0, если программа не прошла данный тест, и оценка за данный тест, если программа прошла его.
    • Целое число T (T >= 0) - время работы программа в миллисекундах на данном тесте.

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

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

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

Первый аргумент командной строки (argv[1]) задает путь к файлу, в который оценивающая программа может записать комментарии для участника. Содержимое этого файла будет доступно как участнику при просмотре им протокола тестирования, так и привилегированным пользователям.

Второй аргумент командной строки (argv[2]) задает путь к файлу, в который оценивающая программа может записать комментации для привелигированных пользователей. Эти комментарии участнику по умолчанию не доступны.

Оценивающая программа может не создавать и ничего не записывать в эти файлы.