Противоречия в записях о птицах

тема: Пропуски, дубликаты, выбросы · уровень: средний

Условие

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

Вид - означает, что в этой записи вид определить не удалось. Такие значения не участвуют в проверке. Повторяющиеся записи допустимы.

Для номера кольца r обозначим через S_r множество всех различных видов, указанных для r в обеих таблицах, кроме -. Номер кольца считается противоречивым тогда и только тогда, когда |S_r| >= 2. Требуется вывести число противоречивых номеров колец.

При равенстве названий вида в нескольких записях они считаются одним и тем же значением и не образуют противоречие. Для каждого номера кольца во входных данных хотя бы в одной записи указан вид, отличный от -.

Ответ является целым числом, дробная часть не выводится.

Формат ввода

В первой строке записаны два целых числа n и m — количество строк в таблице полевых наблюдений и в таблице станции кольцевания.

Следующие n строк содержат записи первой таблицы. Затем следуют m строк второй таблицы.

Каждая строка записи содержит два значения через пробел: целое число ring_id — номер кольца, и строку species — вид птицы либо символ -.

Формат вывода

Выведите одно целое число — количество противоречивых номеров колец.

Ограничения

0 <= n, m <= 2000.

1 <= n + m <= 2000.

1 <= ring_id <= 1000000000.

Строка species имеет длину от 1 до 20 символов и состоит из строчных латинских букв либо равна -.

Для каждого номера кольца, встретившегося во входных данных, существует хотя бы одна строка с этим номером кольца и значением species, отличным от -.

Решить задачу с автопроверкой на Python →

Куда дальше