Разброс сумм случайного чека
Условие
Супермаркет хранит сведения о чеках в двух таблицах. В первой таблице указана итоговая сумма каждого чека. Иногда сумма не была передана кассой: тогда вместо неё записан символ -.
Во второй таблице приведено, сколько раз каждый чек попал в контрольную выборку. Случайный чек выбирается с вероятностью, пропорциональной этому числу. Чеки с неизвестной суммой не участвуют в выборе, а их строки второй таблицы игнорируются.
Пусть случайная величина X равна сумме выбранного чека в копейках. Если известные суммы равны x_i, а соответствующие числа попаданий в выборку равны w_i, то p_i = w_i / Σw_i. Требуется найти генеральную дисперсию D(X) = Σ p_i (x_i - E(X))² и стандартное отклонение σ(X) = √D(X), где E(X) = Σ p_i x_i. При совпадении сумм чеки считаются разными исходами, и их веса складываются только через формулы распределения.
Первой идёт таблица чеков, затем таблица контрольной выборки. Идентификаторы строк требуется сопоставить по значению receipt_id. Гарантируется, что среди чеков с известной суммой есть хотя бы один чек.
Формат ввода
В первой строке записаны два целых числа n и m — число строк в таблице чеков и число строк в таблице контрольной выборки.
Следующие n строк содержат таблицу чеков в формате: receipt_id total
receipt_id — идентификатор чека, total — целое число копеек или символ -, если сумма неизвестна.
Следующие m строк содержат таблицу контрольной выборки в формате: receipt_id selected_count
selected_count — число попаданий чека в контрольную выборку.
Каждый идентификатор встречается ровно один раз в каждой из двух таблиц, и множества идентификаторов в таблицах совпадают.
Формат вывода
Выведите через пробел два числа: сначала D(X), затем σ(X).
Каждое число округляется до трёх знаков после десятичной точки по правилу ближайшего значения. Если число находится ровно посередине, округление выполняется в сторону большего по модулю числа.
Ограничения
1 ≤ n, m ≤ 1000.
n + m ≤ 2000.
Длина receipt_id составляет от 3 до 12 символов латинского алфавита, цифр и символа _.
Для известной суммы выполняется 0 ≤ total ≤ 1 000 000.
1 ≤ selected_count ≤ 1000.
Сумма всех значений selected_count не превосходит 20 000.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами