Ошибки прогноза выдач книг
Условие
Библиотека хранит журнал прогнозов числа выдач книг по филиалам. Для каждой записи известны фактическое число выдач и прогноз, сделанный заранее.
В некоторых строках прогноз отсутствует и обозначается словом NA. Такие строки не используются при вычислении ошибок, так как сравнить прогноз с фактом в них невозможно.
В последней строке входа указан код филиала-запроса. Требуется вычислить качество прогнозов только для этого филиала. Средняя квадратичная ошибка называется MSE и вычисляется по формуле MSE = (e1² + e2² + ... + ek²) / k, а средняя абсолютная ошибка называется MAE и вычисляется по формуле MAE = (|e1| + |e2| + ... + |ek|) / k, где ei = прогноз_i - факт_i, а k — число строк филиала с указанным прогнозом.
Если фактическое число выдач совпадает с прогнозом, ошибка этой строки равна нулю и строка учитывается в обеих метриках.
Формат ввода
В первой строке дано целое число n — число записей журнала.
В следующих n строках даны три значения: код филиала, фактическое число выдач и прогноз. Прогноз является целым числом либо словом NA.
В последней строке дан код филиала-запроса.
Формат вывода
Выведите два числа через пробел: сначала MSE, затем MAE для филиала-запроса.
Каждое число необходимо вывести ровно с тремя знаками после точки. Округление выполняется по правилу: цифра 5 и больше округляет предыдущее значение вверх.
Ограничения
1 ≤ n ≤ 1000.
Код филиала содержит от 1 до 20 символов: строчные латинские буквы и цифры, первый символ — буква.
0 ≤ фактическое число выдач ≤ 100000.
Если прогноз не равен NA, то 0 ≤ прогноз ≤ 100000.
Код филиала-запроса встречается хотя бы в одной строке с числовым прогнозом.
Решить задачу с автопроверкой на Python →
Куда дальше
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Родителям: подготовка бесплатно — сколько стоит репетитор, что даёт бесплатный маршрут и как понять, что ребёнок занимается