NsuTs/Documentation/devguide/rating

server/nsuts/nsuts_new_rating.cgi

Этот скрипт динамически генерирует и отображает рейтинг (места) участников олимпиады.

Составление рейтинга разбито на 2 функции: generateRating, подсчитывающую места участников и генерирующую рейтинг и generateRatingTable, преобразовывающую таблицу рейтинга в html-таблицу.

Участники оцениваются либо по правилам для школьных олимпиад ($checkingmodel = 0), либо по правилам ACM ($... = 1). Смотри соответствующий раздел. Учитывается только самая лучшая посылка участника, т. е. в ACM засчитается самая первая из accepted посылок, а в школьных правилах – набравшая больше баллов. последняя успешно сданная

Учитывается значения сдвига по времени из timeshift (в минутах). Пока (?) нет поддержки виртуальных туров.

generateRating

Функция generateRating возвращает массив @users – абстракцию информации об участнике. Элементы @users – ссылки на хэши следующего вида:
%info = {
'userid', 'login', 'city', 'email', 'trainer', 'trainemail', 'university', 'phone' => очевидно
'title' => ник,
'grade' => класс (для школьников),
'time' => суммарное время (ACM),
'total' => сумма баллов (школьные)/кол-во принятых задач (ACM)
'place' => место в рейтинге,
'tasks' => ссылка на массив хэшей информации по задачам,
некоторые другие поля
}

Элементы массива tasks – ссылки на хэши следующего вида:
%task = {
'tries' => количество неудачных попыток сдать задачу,
'time' => время прошедшее с начала тура до сдачи задачи (ACM),
'status' => '' – задача не сдавалась, '-' – были неудачные попытки сдать, '+' – accepted (ACM),
'points' => количество набранных баллов за задачу (школьные)
}

generateRatingTable

Функция generateRatingTable возвращает html-представление данной таблицы (полученной из generateRating).