Полезность отзывов по городам

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

Условие

Платформа мобильного приложения хранит города в отдельном справочнике. У каждого города есть идентификатор location_id и название.

Во второй таблице находятся отзывы. Для каждого отзыва указаны идентификатор города и число отметок «полезно». Идентификатор города в отзыве может отсутствовать в справочнике, например если город был удалён из справочника. Такой отзыв не учитывается.

Для каждого города из справочника вычисляется сумма отметок «полезно» всех сопоставленных с ним отзывов. Если с городом не сопоставился ни один отзыв, его сумма равна 0. Для города c считается величина

S(c) = сумма helpful_votes по всем отзывам с location_id города c.

Требуется вывести название города с наибольшим значением S(c) и само это значение. Если наибольшее значение достигается у нескольких городов, выводится лексикографически меньшее название города.

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

Формат ввода

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

В следующих n строках записаны идентификатор и название города:

location_id city_name

В следующих m строках записаны идентификатор отзыва, идентификатор города из отзыва и число отметок «полезно»:

review_id location_id helpful_votes

Названия городов не содержат пробелов.

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

Выведите в одной строке название выбранного города и его сумму отметок «полезно», разделённые пробелом.

Ограничения

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

1 ≤ location_id ≤ 10^9.

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

1 ≤ review_id ≤ 10^9, идентификаторы отзывов различны.

0 ≤ helpful_votes ≤ 10000.

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

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

Куда дальше