Сглаживание результатов забегов

тема: Временные ряды и окна · уровень: продвинутый

Условие

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

Для некоторых забегов результат отсутствует: в таблице результатов вместо времени указано NA. Такие забеги не участвуют в расчёте сглаживания. Гарантируется, что хотя бы один результат указан числом.

После сопоставления таблиц по идентификатору забега результаты нужно расположить по возрастанию порядкового номера. Пусть числовые результаты в этом порядке равны \(x_1, x_2, \ldots, x_k\). Коэффициент сглаживания равен \(\alpha=a/1000\). Экспоненциальное сглаживание определяется формулами: \(S_1=x_1\), \(S_i=\alpha x_i+(1-\alpha)S_{i-1}\) для \(i\ge2\). Требуется вывести последнее значение \(S_k\).

При равенстве времени нескольких забегов обе строки обрабатываются отдельно в соответствии с их порядковыми номерами, и равенство не изменяет правило расчёта.

Формат ввода

В первой строке даны два целых числа n и a: число забегов и коэффициент сглаживания в тысячных.

В следующих n строках записана таблица расписания. Каждая строка содержит идентификатор забега run_id и его порядковый номер place.

В следующих n строках записана таблица результатов. Каждая строка содержит идентификатор забега run_id и результат time. Значение time равно вещественному числу с тремя знаками после точки либо строке NA.

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

Выведите последнее значение экспоненциального сглаживания с тремя знаками после точки.

Ограничения

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

Куда дальше