Словарь тренировочного дневника

тема: Текст: мешок слов и TF-IDF · уровень: базовый

Условие

Бегун записывает краткие текстовые заметки о тренировках. Каждая заметка состоит из слов, разделённых одним пробелом. Одинаковыми считаются слова с одинаковым написанием.

Для каждого слова w определяется его частота f(w): число появлений слова w во всех заметках дневника. После отсечения с порогом t в словаре остаются только слова, для которых f(w) >= t.

Для каждого значения порога из запроса требуется вычислить размер словаря V(t) = |{w : f(w) >= t}|. Если ни одно слово не достигает порога, размер словаря равен 0. При равенстве частот слова рассматриваются независимо: каждое слово остаётся в словаре, если его частота не меньше порога.

Формат ввода

В первой строке даны два целых числа n и q: количество заметок и количество порогов в запросе.

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

В последней строке записаны q целых чисел t1, t2, ..., tq: пороги отсечения для запроса.

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

Выведите q целых чисел, по одному в строке. i-е число равно размеру словаря V(ti) для i-го порога запроса.

Выведите целые числа, дробной части в ответе нет.

Ограничения

1 <= n <= 1000.

1 <= q <= 20.

Каждая заметка содержит от 1 до 20 слов.

Каждое слово состоит из строчных латинских букв, длина слова от 1 до 20 символов.

1 <= ti <= 20000 для каждого порога ti.

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

Куда дальше