Три класса с наибольшим временем посещений

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

Условие

В файле data.csv записаны сведения об учениках школьного сайта. Каждый ученик относится к одному классу.

В файле visits.csv записан журнал посещений. Время одного посещения может быть неизвестно: в этом случае соответствующее поле пустое.

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

Суммарное время класса равно сумме значений duration_sec всех его подходящих посещений. Посещения с пустым значением duration_sec игнорируются. Если у класса нет подходящих посещений, его суммарное время считается равным нулю. Округление не применяется, так как выводятся названия классов.

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

Формат ввода

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

Файл data.csv содержит от 300 до 2000 строк данных и заголовок:

student_id,class_name

student_id — целочисленный идентификатор ученика. class_name — название класса.

Файл visits.csv содержит от 300 до 2000 строк данных и заголовок:

visit_id,student_id,visit_date,duration_sec

visit_id — целочисленный идентификатор посещения. student_id ссылается на идентификатор из data.csv. visit_date имеет формат ГГГГ-ММ-ДД. duration_sec — целое число секунд либо пустая строка.

В стандартный ввод подаются две строки. В первой строке записана дата visit_date в формате ГГГГ-ММ-ДД. Во второй строке записан целый порог p.

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

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

Ограничения

Количество строк данных в каждом из файлов: от 300 до 2000.

student_id: от 1 до 2000. Все идентификаторы учеников в data.csv различны.

visit_id: от 1 до 2000. Все идентификаторы посещений в visits.csv различны.

Количество различных классов: от 6 до 20. Длина class_name: от 2 до 10 символов из латинских букв и цифр.

Дата во входе и значения visit_date в файле лежат в диапазоне от 2025-09-01 до 2025-09-30.

duration_sec, если значение не пустое: от 1 до 3600.

Порог p: от 0 до 3600.

В файле data.csv есть не менее трёх классов.

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

Куда дальше