Выручка парковки по действующим тарифам
Условие
В торговом центре работают парковочные зоны с разными тарифами. Файл data.csv содержит сведения о зонах и о временных интервалах, в которые действует тариф. Файл visits.csv содержит записи о въездах автомобилей.
Для каждого въезда в указанную дату необходимо найти строку из data.csv с тем же parking_id. Тариф применяется только тогда, когда время въезда принадлежит полуинтервалу [active_from, active_to): время active_from включается, а время active_to не включается. Записи с пустым значением duration_minutes не учитываются.
Стоимость одного учитываемого въезда равна ceil(duration_minutes / 60) * rate_cents, где ceil означает округление вверх до целого числа часов, а rate_cents измеряется в центах. Требуется найти сумму стоимостей всех учитываемых въездов за запрошенную дату и вывести её в денежных единицах.
Если время въезда совпадает с началом интервала active_from, тариф считается действующим. Если время въезда совпадает с концом интервала active_to, тариф не считается действующим. Если за дату нет учитываемых въездов, следует вывести 0.00.
Формат ввода
Рядом с программой находятся два файла в кодировке UTF-8 с разделителем-запятой.
Файл data.csv содержит от 300 до 4000 строк данных после заголовка: parking_id,zone_name,active_from,active_to,rate_cents.
parking_id — целочисленный идентификатор парковочной зоны. zone_name — её название без запятых. Поля active_from и active_to имеют вид HH:MM. Поле rate_cents — целая стоимость одного начатого часа в центах.
Файл visits.csv содержит от 300 до 4000 строк данных после заголовка: visit_id,parking_id,entry_datetime,duration_minutes.
visit_id — целочисленный идентификатор въезда. Значение parking_id присутствует в первом столбце файла data.csv. Поле entry_datetime имеет вид YYYY-MM-DD HH:MM. Поле duration_minutes содержит целую длительность в минутах либо пустую строку, если длительность не зафиксирована.
В стандартный ввод подаётся одна строка с датой query_date в виде YYYY-MM-DD.
Формат вывода
Выведите суммарную стоимость учитываемых въездов за дату query_date в денежных единицах ровно с двумя знаками после точки.
Ограничения
Количество строк в каждом из файлов: от 300 до 4000.
1 <= parking_id <= 4000, 1 <= visit_id <= 1000000.
Длина zone_name: от 3 до 30 символов.
Время в полях active_from, active_to и во времени въезда корректно: часы от 00 до 23, минуты от 00 до 59. Для каждой зоны выполняется active_from < active_to.
Дата в entry_datetime и query_date находится в диапазоне от 2025-01-01 до 2025-12-31.
1 <= rate_cents <= 5000.
Непустое значение duration_minutes удовлетворяет условию 1 <= duration_minutes <= 1440. Пустая длительность означает пропуск и не учитывается.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Перечневые олимпиады по информатике — олимпиады перечня Минобрнауки, их уровни и что нужно к диплому
- БВИ по олимпиадам: в какие вузы берут — правила приёма вузов, разобранные построчно, со ссылкой на приказ у каждой строки