Контест Junior net/http и middleware обновлено

Статистика access-логов: ошибки и p95 на Go

Условие

По логу запросов посчитайте для каждого пути: число запросов, число ответов 5xx, долю 5xx в процентах (округление вниз до целого) и p95 времени ответа.

p95 считается методом ближайшего ранга: отсортируйте времена по возрастанию, возьмите элемент с номером ⌈0.95·n⌉ (нумерация с 1).

Ввод: n (1 ≤ n ≤ 2000), затем строки МЕТОД путь статус время_мс.

Вывод: по строке на путь в порядке возрастания пути: путь запросы 5xx процент p95.

Пример

5
GET /api/users 200 12
GET /api/users 500 300
POST /login 401 40
GET /api/users 200 15
POST /login 200 35
/api/users 3 1 33 300
/login 2 0 0 40

Как подойти

map[path]*stats, целочисленный ранг (95n+99)/100, сортировка времён.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме