F-мера отбора призёров забега
Условие
На школьной спартакиаде система заранее отмечает участников забега, которых считает возможными призёрами. После забега известен фактический результат: призёром считается участник с меткой 1, остальные имеют метку 0.
Для каждого участника дана фактическая метка и прогноз системы. Прогноз 1 означает, что система отметила участника как возможного призёра, 0 означает, что не отметила, а - означает пропуск прогноза. Пропуск прогноза следует считать прогнозом 0.
Необходимо для каждого запрошенного значения параметра beta вычислить F-меру с параметром beta. Пусть TP — число участников с фактической меткой 1 и прогнозом 1, FP — число участников с фактической меткой 0 и прогнозом 1, FN — число участников с фактической меткой 1 и прогнозом 0 или -. Тогда
F_beta = ((1 + beta^2) * TP) / ((1 + beta^2) * TP + beta^2 * FN + FP).
Если знаменатель формулы равен нулю, значение F-меры считается равным 0. При равенстве нескольких значений параметра beta они считаются отдельными запросами, а ответы выводятся в порядке запросов.
Формат ввода
В первой строке дано целое число n — количество участников забега.
В следующих n строках даны три значения: идентификатор участника, фактическая метка призёра и прогноз системы.
Затем дано целое число q — количество запросов.
В следующих q строках дано по одному целому числу beta — параметру F-меры для очередного запроса.
Формат вывода
Выведите q строк. В строке с номером запроса выведите соответствующее значение F_beta с тремя знаками после точки.
Округляйте до трёх знаков после точки по обычному правилу: если следующая цифра равна 5 или больше, предыдущее число увеличивается на единицу.
Ограничения
1 <= n <= 4000.
1 <= q <= 1000.
Идентификатор участника состоит из латинских букв, цифр и символа _, его длина от 1 до 20 символов.
Фактическая метка равна 0 или 1.
Прогноз системы равен 0, 1 или -.
1 <= beta <= 100.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- На программиста по олимпиаде: путь по классам — что даёт диплом, куда с ним берут на ИТ-направления и почему решает 9 класс
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт