Соревнования по программированию

Добавление задачи в систему SPOJ. Описание программы судьи высшего уровня (Master Judge)

Возможность редактировать судью высшего уровня (Master Judge) для задачи появилась относительно недавно. Настройка этого судьи дает больше гибкости в настройке задачи для разработчика. Однако стандартный Generic masterjudge подойдет для большинства задач. Код для стандартного Generic masterjudge приведен ниже:

1000. Generic Masterjudge

#include #include int main() { spoj_init(); int test, sig, mem, memMax=0, tc=0; double score, scoreAll=0, time, timeAll=0; char status[4]; while (fscanf(spoj_p_in, "%d %3s %lf %d %lf %d\n", &test, status, &score, &sig, &time, &mem)==6) { fprintf(spoj_p_info, "test %d - %s (score=%lf, sig=%d, time=%lf, mem=%d)\n", test, status, score, sig, time, mem); memMax >?= mem; scoreAll += score; timeAll += time; if (status[0]!='A') { fprintf(spoj_score, "%s 0 %d %lf %d\n", status, sig, timeAll, memMax); return 0; } tc++; } fprintf(spoj_score, "AC %lf 0 %lf %d\n", scoreAll/tc, timeAll, memMax); }

Стандартный Generic Masterjudge работает следующим образом:
- если хотя бы один из тестов не дает в итоге "Acepted" (а дает Wrong Answer, TLE и.т.д), тогда всё решение помечается, как неверное
- иначе результат считается AC, счет считается средним по всем тестовым последовательностям, использованием памяти считается по максимальному значению, а время суммируется по всем тестам.
Если в задаче всего один тест, то Masterjudge просто копирует все значения.

Необходимость поменять стандартный MasterJudge возникает в случае необходимости усложнить систему начисления очков или вывода дополнительной информации по решению. Несколько идей:
- невыполнение одного теста не приводит к незачету всего решения; Например, AC для одного теста = один балл к финальному счету
- включение времени выполнения в финальный счет (широко используется в турнирах серии ZCon)
- вывод некоторой информации по каждому из тестов для пользователя (например, он может кликнуть на надпись "5 points" и увидеть, что у него WA за тест номер 3 и TLE для тестов 6-10, для задачи, где всего 10 тестов)

<-- Часть 2. Примеры программ судей (Judges)