Инерция времени обработки заявок
Условие
Провайдер распределяет заявки службы поддержки между группами специалистов. В первой таблице указана группа, закреплённая за каждой заявкой. Во второй таблице указано фактическое время обработки тех же заявок. Строки второй таблицы могут идти в другом порядке, поэтому таблицы необходимо сопоставить по идентификатору заявки.
Значение NA во второй таблице означает, что время обработки пока неизвестно. Такие заявки не учитываются в расчёте. Для каждой группы рассматриваются только заявки этой группы с известным временем обработки.
Необходимо найти инерцию распределения заявок по группам. Если для группы g известны времена обработки x1, x2, ..., xk, её центр равен среднему арифметическому cg = (x1 + x2 + ... + xk) / k. Инерция равна сумме квадратов расстояний до центров своих групп:
I = Σ (xi - cg)²,
где суммирование идёт по всем заявкам с известным временем обработки. Если несколько заявок имеют одинаковое время обработки, каждая из них учитывается в сумме отдельно.
Формат ввода
В первой строке даны два целых числа n и m — число строк в таблице заявок и число строк в таблице времени обработки.
Следующие n строк содержат таблицу заявок. В каждой строке записаны идентификатор заявки id и название группы group.
Следующие m строк содержат таблицу времени обработки. В каждой строке записаны идентификатор заявки id и значение minutes. Значение minutes равно целому числу либо строке NA.
Формат вывода
Выведите одно число — инерцию, округлённую до двух знаков после точки.
Округление выполняется до ближайшего значения с двумя знаками после точки. Если число находится ровно посередине, округление выполняется вверх.
Ограничения
1 ≤ n, m ≤ 1000.
n + m ≤ 2000.
Идентификатор заявки — целое число от 1 до 10^9.
Название группы состоит из строчных латинских букв и цифр, его длина от 1 до 12 символов.
Известное время обработки — целое число от 0 до 100000 минут.
Все идентификаторы в первой таблице различны. Все идентификаторы во второй таблице различны. Наборы идентификаторов в обеих таблицах совпадают.
В каждой группе есть хотя бы одна заявка с известным временем обработки, поэтому деления на ноль не возникает.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- Перечневые олимпиады по информатике — олимпиады перечня Минобрнауки, их уровни и что нужно к диплому
- БВИ по олимпиадам: в какие вузы берут — правила приёма вузов, разобранные построчно, со ссылкой на приказ у каждой строки