Максимальные поездки по району и типу велосипеда

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

Условие

В файле data.csv хранятся сведения о станциях городского велопроката. Каждая станция относится к району города и обслуживает один тип велосипеда.

В файле trips.csv записаны поездки. Каждая поездка ссылается на станцию старта по её идентификатору. Для некоторых поездок длительность неизвестна и записана как пустое поле.

По заданным дате и порогу длительности необходимо соединить поездки со станциями по полю station_id. Затем для каждой пары (district, bike_type) среди поездок указанной даты найти максимальную известную длительность. Требуется вывести число пар, у которых найденный максимум не меньше заданного порога.

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

Формат ввода

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

Файл data.csv содержит от 300 до 2000 строк без учёта заголовка. Его столбцы: station_id — целочисленный идентификатор станции, district — название района, bike_type — тип велосипеда.

Файл trips.csv содержит от 300 до 2000 строк без учёта заголовка. Его столбцы: trip_id — целочисленный идентификатор поездки, station_id — идентификатор станции старта из файла data.csv, trip_date — дата в формате YYYY-MM-DD, duration_minutes — целая длительность поездки в минутах или пустое значение.

В единственной строке stdin записаны через пробел дата query_date в формате YYYY-MM-DD и целый порог threshold.

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

Выведите одно целое число — количество пар (district, bike_type), для которых максимальная известная длительность поездки в дату query_date не меньше threshold.

Дробной части в ответе нет, выводится целое число.

Ограничения

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

station_id: от 1 до 1 000 000.

trip_id: от 1 до 10 000 000.

Длина названия района district: от 3 до 30 символов.

Длина типа велосипеда bike_type: от 3 до 20 символов.

duration_minutes, если значение не пустое: целое число от 1 до 240.

Дата поездки и query_date лежат в диапазоне от 2026-05-01 до 2026-05-10.

threshold: целое число от 1 до 300.

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

Куда дальше