Сверка журналов солнечных панелей
Условие
Оператор солнечной электростанции ведёт два журнала. В журнале прогноза записываются ожидаемые значения выработки панелей, а в журнале измерений — показания датчиков.
Ключом записи считается пара из номера дня и идентификатора панели. В одном журнале может быть несколько строк с одинаковым ключом: такие строки описывают один и тот же ключ и должны учитываться только один раз. Значение выработки NA означает, что значение неизвестно, но сама запись с таким ключом существует и участвует в подсчёте.
Для каждого дня из запроса пусть A — множество идентификаторов панелей, имеющих хотя бы одну строку прогноза в этот день, а B — множество идентификаторов панелей, имеющих хотя бы одну строку измерений в этот день. Требуется вывести два числа: |A ∩ B| — число панелей, встречающихся в обоих журналах, и |A Δ B| — число панелей, встречающихся ровно в одном журнале. Здесь A Δ B = (A \ B) ∪ (B \ A).
Если для дня нет записей в одном или обоих журналах, соответствующее множество считается пустым. При равенстве двух подсчитанных чисел первым всё равно выводится число панелей из обоих журналов, а вторым — число панелей ровно из одного журнала.
Формат ввода
В первой строке даны два целых числа n и m — количество строк в журнале прогноза и журнале измерений.
В следующих n строках записаны строки журнала прогноза в формате: day panel_id energy
В следующих m строках записаны строки журнала измерений в таком же формате: day panel_id energy
day — номер дня, panel_id — идентификатор панели, energy — целое число или строка NA.
Затем дана строка с целым числом q — количеством дней в запросе. В следующих q строках записаны номера дней. Для каждого номера дня требуется вывести отдельный ответ в том же порядке, в котором дни даны в запросе.
Формат вывода
Выведите q строк. В каждой строке выведите два целых числа через пробел: количество ключей, встречающихся в обоих журналах, и количество ключей, встречающихся ровно в одном журнале для соответствующего дня запроса.
Округление не требуется: оба выводимых значения являются целыми числами.
Ограничения
0 ≤ n, m, 1 ≤ n + m ≤ 2000.
1 ≤ q ≤ 100.
1 ≤ day ≤ 366 в строках журналов и в запросах.
panel_id имеет вид P затем от 1 до 4 цифр, длина идентификатора от 2 до 5 символов.
Если energy не равно NA, то 0 ≤ energy ≤ 100000.
Общее число строк двух журналов не превышает 2000.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами