Рейтинг вкусов для выбранных киосков

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

Условие

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

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

Для вкуса f его результат вычисляется по формуле S(f) = Σ scoops_i, где суммирование идёт по всем строкам продаж i, в которых вкус равен f, а киоск входит в запрос. Если для некоторого вкуса нет подходящих строк продаж, его результат равен 0.

Требуется вывести названия трёх вкусов с наибольшими значениями S(f) в порядке убывания результата. При равенстве результатов вкусы располагаются в лексикографическом порядке их названий.

Округление не применяется, так как все результаты являются целыми числами.

Формат ввода

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

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

В следующих n строках записаны три значения: название киоска, название вкуса и целое число scoops — количество проданных шариков.

Затем дано целое число k — количество киосков в запросе.

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

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

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

Ограничения

3 ≤ m ≤ 500.

1 ≤ n ≤ 2000.

1 ≤ k ≤ 500.

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

Все названия вкусов в списке доступных вкусов различны.

Все названия киосков в запросе различны.

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

0 ≤ scoops ≤ 10000.

Строк с пропущенными полями нет. Отсутствие строки продаж для пары киоск–вкус означает, что для этой пары продано 0 шариков.

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

Куда дальше