Проверка SLA по актуальному тарифу
Условие
В службе поддержки провайдера для каждой заявки известен тариф клиента и фактическое время первого ответа оператора. Значение -1 означает, что первый ответ ещё не был дан.
Справочник тарифов может содержать несколько версий одного тарифа. Для заявки используется версия с наибольшим номером дня вступления в силу. Если у одного тарифа несколько записей имеют одинаковый наибольший номер дня, используется запись, расположенная позже во входных данных.
В конце входа указан запрос из идентификаторов заявок. Для каждой заявки из запроса определяется индикатор нарушения SLA: I = 1, если фактическое время первого ответа строго больше норматива тарифа, и I = 0 иначе. Для заявки с временем ответа -1 индикатор всегда равен 0. Требуется вывести сумму индикаторов по всем заявкам из запроса. Все идентификаторы в запросе различны и существуют среди заявок.
При равенстве наибольших номеров дня для одного тарифа выбирается запись, расположенная позже во входных данных.
Формат ввода
В первой строке заданы три целых числа n, m, q — количество заявок, записей справочника тарифов и идентификаторов в запросе.
В следующих n строках заданы сведения о заявках в формате: ticket_id plan_code response_minutes
Здесь ticket_id — идентификатор заявки, plan_code — код тарифа, response_minutes — фактическое время первого ответа в минутах или -1.
В следующих m строках задан справочник тарифов в формате: plan_code effective_day sla_minutes
Здесь effective_day — номер дня вступления версии тарифа в силу, sla_minutes — норматив первого ответа в минутах.
В последних q строках записаны идентификаторы заявок, входящих в запрос.
Формат вывода
Выведите одно целое число — количество нарушений SLA среди заявок из запроса.
Дробная часть отсутствует, выводится целое число без округления.
Ограничения
1 ≤ n ≤ 4000, 1 ≤ m ≤ 4000, 1 ≤ q ≤ n.
n + m ≤ 4000.
1 ≤ ticket_id ≤ 10^9, все идентификаторы заявок различны.
Длина plan_code составляет от 1 до 12 символов. Код состоит из строчных латинских букв.
response_minutes = -1 или 0 ≤ response_minutes ≤ 100000.
1 ≤ effective_day ≤ 100000, 1 ≤ sla_minutes ≤ 100000.
Для каждого кода тарифа, указанного в заявках, существует хотя бы одна запись в справочнике.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Родителям: подготовка бесплатно — сколько стоит репетитор, что даёт бесплатный маршрут и как понять, что ребёнок занимается
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели