Число пар записей въезда и выезда

тема: Связывание таблиц · уровень: средний

Условие

Система парковки торгового центра хранит журналы въездов и выездов отдельно. Каждая строка содержит код парковочного талона. Один и тот же код может встретиться несколько раз: например, из-за повторной передачи записи с терминала.

Нужно определить, сколько строк получилось бы после соединения двух таблиц по полю ticket_code. Строка въезда и строка выезда образуют пару тогда и только тогда, когда их коды талонов совпадают.

Пусть enter[k] — число строк с кодом k в журнале въездов, а exit[k] — число строк с тем же кодом в журнале выездов. Требуется вычислить сумму Σ enter[k] × exit[k] по всем кодам k. При равенстве кодов каждая строка въезда образует отдельную пару с каждой строкой выезда с этим кодом. Код, присутствующий только в одной таблице, вносит в сумму ноль. Пропусков внутри строк нет.

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

Формат ввода

В первой строке даны два целых числа n и m — количество строк в журнале въездов и в журнале выездов.

В следующих n строках записаны коды талонов из журнала въездов.

В следующих m строках записаны коды талонов из журнала выездов.

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

Выведите одно целое число — количество пар строк, которые получатся после соединения журналов по коду талона.

Ограничения

1 ≤ n ≤ 2000.

1 ≤ m ≤ 2000.

Каждый код талона состоит из заглавных латинских букв и цифр.

Длина каждого кода талона составляет от 1 до 8 символов.

Количество пар не превосходит 4 000 000.

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

Куда дальше