Closed vvd170501 closed 1 year ago
кажется, наоборот, нужно все предыдущие попытки, кроме rejected и ignored штрафовать
Почему? Если пользователь сдал решение, получил ОК, а потом решил переотправить его (например, с добавленным комментарием), то как-то странно за это штрафовать.
Описание проблемы
Если в контесте используетсяя система KIROV, без опций
ignore_unmarked
иscore_latest_or_unmarked
, то на странице "Standings" предыдущие посылки со статусом "OK" ошибочно учитываются при вычислении штрафа. В частности, из-за этого некорректно считается балл для посылок с положительнымscore_adj
, если у пользователя были предыдущие правильные посылки в этой задаче.Пример списка посылок:
Так отображается балл в "Standings" в интерфейсе администратора:
(в таблице 108 баллов, хотя должно быть 110)
В интерфейсе пользователя также отображается некорректный балл, т.к. для обеих таблиц используется один и тот же код.
Причина
Проблема заключается в том, что для вычисления штрафа используется
att_num
- суммарное число посылок пользователя в конкретной задаче, а не количество частичных решений.Возможный вариант исправления
vvd170501/ejudge@36bfcf8d8 + vvd170501/ejudge@40cf178e8. Исправлен подсчёт только для контестов без опций
score_latest_or_unmarked
иignore_unmarked
.sol_att
- в таблице посылок они дают только отделный штрафdisqualified_penalty
, но не увеличивают штраф отrun_penalty
.Возможно, этот коммит ломает подсчёт баллов для контестов с
ignore_unmarked
(должны ли непомеченные посылки со статусом OK учитываться в штрафе?).Отображение баллов в Standings в контестах с
score_latest_or_unmarked
не проверял, но, скорее всего, для них эта проблема тоже актуальна.