Статистика выработки солнечных панелей
Условие
Компания ведёт две таблицы о солнечных панелях. В первой таблице хранится реестр панелей и признак участия панели в отчёте. Во второй таблице приведены показания датчиков за один день.
Показание -1 означает, что датчик не передал данные. В статистику входят только показания панелей с признаком участия 1 и только показания, не равные -1. Все идентификаторы во второй таблице присутствуют в реестре.
Для полученного набора значений $x_1, x_2, \dots, x_k$ требуется найти среднее арифметическое, медиану и моду. Среднее арифметическое равно $\frac{x_1+x_2+\dots+x_k}{k}$. Медиана равна центральному значению после сортировки, а при чётном количестве значений равна среднему двух центральных значений. Мода — значение, встречающееся чаще остальных. Если несколько значений встречаются одинаковое наибольшее число раз, модой считается меньшее из них. После исключения пропусков в отчёте всегда остаётся хотя бы одно значение.
Формат ввода
В первой строке даны два целых числа n и m — число строк в реестре панелей и число строк с показаниями датчиков.
В следующих n строках даны идентификатор панели panel_id и целое число report_flag. Значение 1 означает, что панель участвует в отчёте, значение 0 — не участвует.
В следующих m строках даны идентификатор панели panel_id и целое число energy_wh — выработка панели за день в ватт-часах. Значение -1 обозначает пропуск показания.
Формат вывода
Выведите через пробел среднее арифметическое, медиану и моду выбранных показаний в указанном порядке.
Каждое из трёх чисел выводится ровно с двумя знаками после десятичной точки. Округление выполняется до ближайшего значения с двумя знаками после точки, а при ровно половинном случае — в большую сторону по модулю.
Ограничения
$1 \le n \le 1000$.
$1 \le m \le n$.
Длина каждого идентификатора panel_id составляет от 1 до 20 символов и содержит только латинские буквы, цифры и символ _.
Идентификаторы в реестре попарно различны. Идентификаторы в таблице показаний попарно различны и все присутствуют в реестре.
$report\_flag \in \{0, 1\}$.
$-1 \le energy\_wh \le 2000$.
Среди строк показаний найдётся хотя бы одна строка с report_flag = 1 и energy_wh \ne -1.
Решить задачу с автопроверкой на Python →
Куда дальше
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Родителям: подготовка бесплатно — сколько стоит репетитор, что даёт бесплатный маршрут и как понять, что ребёнок занимается