Составление рейтинга разбито на 2 функции: generateRating, подсчитывающую места участников и генерирующую рейтинг и generateRatingTable, преобразовывающую таблицу рейтинга в html-таблицу.
Участники оцениваются либо по правилам для школьных олимпиад ($checkingmodel = 0), либо по правилам ACM ($... = 1). Смотри соответствующий раздел. Учитывается только самая лучшая посылка участника, т. е. в ACM засчитается самая первая из accepted посылок, а в школьных правилах – набравшая больше баллов. последняя успешно сданная
Учитывается значения сдвига по времени из timeshift (в минутах). Пока (?) нет поддержки виртуальных туров.
%info = {
'title' => ник,
'grade' => класс (для школьников),
'time' => суммарное время (ACM),
'total' => сумма баллов (школьные)/кол-во принятых задач (ACM)
'place' => место в рейтинге,
'tasks' => ссылка на массив хэшей информации по задачам,
}
Элементы массива tasks – ссылки на хэши следующего вида:
%task = {
'time' => время прошедшее с начала тура до сдачи задачи (ACM),
'status' => '' – задача не сдавалась, '-' – были неудачные попытки сдать, '+' – accepted (ACM),
'points' => количество набранных баллов за задачу (школьные)