Три самых посещаемых раздела сайта

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

Условие

Школьный сайт хранит справочник разделов и журнал посещений. Для каждого посещения известны раздел и длительность просмотра страницы в секундах. Иногда длительность не успела записаться: тогда вместо числа стоит NA.

Для каждого раздела вычисляется суммарная длительность просмотров: \(T(s)=\sum d_i\), где суммируются длительности всех строк журнала с разделом s, а строки со значением NA в сумме не учитываются. Если у раздела нет посещений с известной длительностью, его сумма равна 0.

Требуется вывести названия трёх разделов с наибольшими значениями \(T(s)\). Разделы упорядочиваются по убыванию суммы, а при равных суммах — лексикографически по возрастанию названия. Округление не применяется, так как выводятся только названия разделов.

Формат ввода

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

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

В следующих n строках записаны два значения через пробел: название раздела и длительность просмотра. Длительность является целым числом либо строкой NA.

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

Выведите ровно три названия разделов через один пробел в порядке от большего значения суммарной длительности к меньшему.

Ограничения

3 ≤ m ≤ 100.

1 ≤ n, m + n ≤ 2000.

Названия разделов состоят только из строчных латинских букв, имеют длину от 1 до 20 символов и попарно различны.

Каждое название раздела в журнале присутствует в справочнике.

Известная длительность просмотра — целое число от 1 до 3600 включительно.

Пропуск длительности обозначается строго строкой NA и не добавляет ничего к сумме раздела.

При равенстве суммарных длительностей раздел с лексикографически меньшим названием выводится раньше.

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

Куда дальше