Пиковая активность по классу и разделу

тема: Таблицы: фильтр и группировка · уровень: средний

Условие

Школьный сайт хранит две таблицы. В первой таблице записано, из какого класса был открыт каждый сеанс посещения. Во второй таблице записаны действия в разделах сайта во время сеансов.

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

peak(класс, раздел) = max(длительность действия).

Необходимо посчитать количество пар (класс, раздел), для которых пиковое время не меньше 120 секунд. Пары, для которых нет ни одного действия, не образуются и не учитываются. Если максимальная длительность достигается у нескольких действий одной пары, эта пара всё равно учитывается ровно один раз.

Формат ввода

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

В следующих n строках находятся данные таблицы сеансов: session_id class_number, где session_id — идентификатор сеанса, а class_number — номер класса ученика.

В следующих m строках находятся данные таблицы действий: session_id section duration_seconds, где session_id — идентификатор сеанса, section — название раздела сайта, duration_seconds — длительность действия в секундах.

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

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

Выведите одно целое число — количество пар (класс, раздел), у которых максимальная длительность действия не меньше 120 секунд.

Дробная часть отсутствует, выводится целое число без округления.

Ограничения

1 ≤ n, 1 ≤ m, n + m ≤ 2000.

1 ≤ session_id ≤ 10^9.

Идентификаторы сеансов в первой таблице попарно различны.

1 ≤ class_number ≤ 11.

0 ≤ duration_seconds ≤ 3600.

Название section состоит из строчных латинских букв, его длина от 3 до 12 символов.

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

Куда дальше