Выручка по тарифам в киоске

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

Условие

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

Тариф действует на полуинтервале времени [minute_start, minute_end): начальная минута входит в интервал, конечная не входит. Для операции выбирается действующий тариф того же киоска.

Для каждой подходящей операции вычисляется стоимость scoops × tariff_cents / 100 рублей. Требуется найти сумму стоимостей всех подходящих операций указанного киоска.

Если время операции покрывают несколько тарифов, выбирается тариф с наибольшим minute_start. При равенстве minute_start выбирается тариф, строка которого расположена в файле позже.

Операция с пустым значением scoops, а также тариф с пустым значением tariff_cents не учитываются. Если для операции нет действующего тарифа, она не добавляется к сумме. Если у указанного киоска нет подходящих операций, сумма равна 0.00.

Формат ввода

В файле data.csv в кодировке UTF-8 используется разделитель-запятая. Первая строка содержит заголовок:

row_type,kiosk_id,minute_start,minute_end,operation_minute,scoops,tariff_cents

В файле от 300 до 4000 строк данных. Поле row_type равно tariff для строки тарифа или sale для строки продажи. Для тарифа заполнены поля kiosk_id, minute_start, minute_end, tariff_cents; остальные поля могут быть пустыми. Для продажи заполнены поля kiosk_id, operation_minute; поле scoops может быть пустым.

В stdin дана одна строка с идентификатором киоска kiosk_id, для которого требуется вычислить сумму.

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

Выведите сумму в рублях ровно с двумя знаками после десятичной точки.

Ограничения

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

Куда дальше