Уникальные слова в комментариях к доставкам
Условие
Служба доставки хранит комментарии к заказам в одной таблице, а результаты доставки — в другой. Таблицы связываются по идентификатору заказа.
Нужно посчитать число различных слов в комментариях только тех заказов, у которых результат доставки равен delivered.
Нормализацией слова называется перевод букв в нижний регистр. Словом считается максимальная последовательность латинских букв A–Z или a–z. Все остальные символы разделяют слова. Стоп-слова после нормализации не учитываются.
Пусть W — множество всех нормализованных слов из комментариев доставленных заказов, не являющихся стоп-словами. Требуется вывести величину |W|, то есть количество уникальных подходящих слов. Если доставленных заказов нет или после удаления стоп-слов не осталось слов, следует вывести 0. Повторения слов в одном или нескольких комментариях учитываются один раз.
Равенства между вариантами выбора не возникают, так как требуется вывести одно целое число.
Формат ввода
В первой строке даны два целых числа n и k — количество заказов в каждой из двух таблиц и количество стоп-слов.
Следующие n строк образуют таблицу комментариев. Каждая строка содержит идентификатор заказа, символ табуляции и комментарий к заказу:
order_id<TAB>comment
Комментарий может быть пустым, тогда после идентификатора всё равно записан символ табуляции.
Следующие n строк образуют таблицу результатов доставки. Каждая строка содержит идентификатор заказа, символ табуляции и результат:
order_id<TAB>status
Строки второй таблицы могут идти в любом порядке. Для каждого идентификатора из первой таблицы существует ровно одна строка во второй таблице.
В следующих k строках записаны стоп-слова, по одному в строке. Они уже записаны строчными латинскими буквами.
Формат вывода
Выведите одно целое число — количество уникальных нормализованных слов из комментариев заказов со статусом delivered, не входящих в список стоп-слов.
Дробной части у ответа нет, округление не применяется.
Ограничения
1 ≤ n ≤ 1000.
0 ≤ k ≤ 100.
Идентификатор заказа имеет длину от 1 до 12 символов, начинается с заглавной латинской буквы и далее содержит только заглавные латинские буквы и цифры.
Длина комментария от 0 до 120 символов. Комментарий содержит только латинские буквы, пробелы и символы ,, ., -, ?.
Каждое стоп-слово имеет длину от 1 до 20 символов и содержит только строчные латинские буквы.
Статус имеет одно из трёх значений: delivered, cancelled, returned.
Решить задачу с автопроверкой на Python →
Куда дальше
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Родителям: подготовка бесплатно — сколько стоит репетитор, что даёт бесплатный маршрут и как понять, что ребёнок занимается