Категория с наибольшим временем просмотра

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

Условие

В файле data.csv хранится справочник фильмов онлайн-кинотеатра. Для каждого фильма указана его категория.

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

Для каждой категории вычисляется суммарное время просмотра:

sum(watch_minutes) по всем событиям, для которых completion_percent >= threshold и фильм события относится к этой категории.

Требуется вывести название категории с наибольшим суммарным временем просмотра. Если наибольшее значение достигается у нескольких категорий, выводится лексикографически меньшее название категории. Каждая категория содержит хотя бы один фильм, а для каждого фильма есть событие с completion_percent = 100, поэтому после фильтрации пустых категорий не возникает.

Формат ввода

Рядом с программой находятся два CSV-файла в кодировке UTF-8 с разделителем-запятой.

Файл data.csv содержит от 300 до 2000 строк данных и заголовок. Его столбцы: movie_id — целочисленный идентификатор фильма, title — название фильма или пустая строка, category — название категории.

Файл watch_events.csv содержит от 600 до 2000 строк данных и заголовок. Его столбцы: event_id — целочисленный идентификатор события, movie_id — идентификатор фильма из data.csv, watch_minutes — целое число минут просмотра, completion_percent — целый процент досмотра.

В stdin подаётся одно целое число threshold — минимальный процент досмотра события, которое нужно учитывать.

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

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

Ограничения

300 <= число строк в data.csv <= 2000.

600 <= число строк в watch_events.csv <= 2000.

1 <= movie_id <= 1000000.

1 <= event_id <= 10000000.

Длина title — от 0 до 80 символов.

Длина category — от 3 до 40 символов.

1 <= watch_minutes <= 600.

0 <= completion_percent <= 100.

0 <= threshold <= 100.

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

Куда дальше