Сумма поездок после восстановления пропусков
Условие
В файле data.csv приведён справочник станций городского велопроката. В файле events.csv приведено число поездок, начатых на каждой станции в каждый из десяти дней наблюдения.
В некоторых строках файла events.csv значение trip_count равно NA. Такое значение означает пропуск измерения. Для каждой станции пропуски необходимо восстановить линейной интерполяцией по номеру дня.
Для пропуска в день d, расположенного между известными значениями x_L в день d_L и x_R в день d_R, восстановленное значение равно x(d) = x_L + (x_R - x_L) * (d - d_L) / (d_R - d_L). После восстановления всех пропусков требуется найти сумму числа поездок по всем станциям указанного района и всем дням наблюдения.
Гарантируется, что для каждой станции дни 1 и 10 имеют известные значения, поэтому интерполяция всегда определена. При равенстве числовых значений результат не меняется, так как требуется только их сумма.
Формат ввода
Рядом с программой находятся два файла в кодировке UTF-8 с разделителем-запятой.
Файл data.csv содержит заголовок и строки вида station_id,district,station_name, где station_id — целочисленный идентификатор станции, district — код района, station_name — название станции.
Файл events.csv содержит заголовок и строки вида station_id,day,trip_count, где station_id ссылается на станцию из data.csv, day — номер дня, а trip_count — целое число поездок либо строка NA.
В стандартный ввод подаётся одна строка с кодом района district.
Формат вывода
Выведите сумму восстановленных значений trip_count для всех станций указанного района за все дни с двумя знаками после точки.
Ограничения
В файле data.csv от 300 до 4000 строк с данными. station_id — целое число от 1 до 1000000. Длина кода района составляет от 3 до 12 символов, длина названия станции — от 1 до 40 символов.
В файле events.csv от 300 до 4000 строк с данными. Для каждой станции из файла data.csv имеется ровно одна строка для каждого дня от 1 до 10. trip_count, если он не равен NA, является целым числом от 0 до 100000. Первый и последний дни каждой станции не содержат пропусков.
Код района из стандартного ввода существует в файле data.csv.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Родителям: подготовка бесплатно — сколько стоит репетитор, что даёт бесплатный маршрут и как понять, что ребёнок занимается
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели