Статистика выработки солнечных панелей

тема: Описательная статистика · уровень: базовый

Условие

Компания ведёт две таблицы о солнечных панелях. В первой таблице хранится реестр панелей и признак участия панели в отчёте. Во второй таблице приведены показания датчиков за один день.

Показание -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 →

Куда дальше