Сумма компенсаций по услугам

тема: Пропуски, дубликаты, выбросы · уровень: средний

Условие

Провайдер регистрирует обращения в службу поддержки в хронологическом порядке. Для каждого обращения указаны идентификатор, код услуги и размер компенсации в копейках.

Иногда размер компенсации не указан и вместо него записан символ -. В таком случае считается, что размер компенсации равен последнему ранее указанному размеру компенсации для той же услуги. Пропуски восстанавливаются независимо для каждого кода услуги. Гарантируется, что для первого обращения каждой услуги размер компенсации указан.

В конце входа приведён запрос из одного или нескольких кодов услуг. Требуется найти сумму компенсаций после восстановления пропусков только по обращениям услуг из запроса. Если один и тот же код услуги указан в запросе несколько раз, он учитывается только один раз. Искомая сумма в рублях равна S = (сумма восстановленных компенсаций в копейках) / 100.

Ответ следует вывести с двумя знаками после точки. При равенстве кодов услуг в запросе повторяющиеся коды учитываются один раз.

Формат ввода

В первой строке дано целое число n — количество обращений.

В следующих n строках записаны три значения: ticket_id, service_code, compensation_cents. Значение compensation_cents является целым числом в копейках либо символом -.

В следующей строке дано целое число q — количество кодов услуг в запросе.

В следующих q строках записаны коды услуг из запроса.

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

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

Ограничения

1 ≤ n ≤ 2000.

1 ≤ ticket_id ≤ 10^9, идентификаторы обращений различны и идут в хронологическом порядке.

Длина service_code составляет от 3 до 12 символов. Код состоит из строчных латинских букв и символа _.

Если компенсация указана, то 0 ≤ compensation_cents ≤ 1 000 000.

1 ≤ q ≤ 2000.

Каждый код в запросе встречается среди кодов услуг обращений. Для первого обращения с каждым кодом услуги компенсация не равна -.

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

Куда дальше