Поисковый индекс
Аспирантка Анна занимается разработкой нового метода индексирования для ускорения нечёткого поиска. Анна решила, что множество ключей её индекса будет определяться следующим образом. Пусть имеется набор из N входных текстовых документов. Назовём непустую строку полезной, если она имеет длину не более L и встречается в качестве подстроки не менее чем в одном и не более чем в T документах. Тогда множество ключей индекса строится так:
Рассмотрим пример. Пусть дано три входных документа – 'aba', 'caba' и 'dab', при этом T = 2 и L = 3. После первого шага получаем множество 'aba', 'ba', 'c', 'ca', 'cab', 'd', 'da', 'dab'. Подстроки 'a' и 'b' в него не попали, так как встречаются более чем в T документах. После удаления лишних элементов на втором шаге окончательный ответ будет равен 'ba', 'c', 'd' Анна заметила, что построение индекса непосредственно вышеописанным способом может выполняться слишком долго. Ваша задача – придумать и реализовать эффективный алгоритм построения результирующего множества. Входные данные В первой строке входных данных записаны три натуральных числа N, T и L (1 ≤ N, T ≤ 106, 1 ≤ L ≤ 10). Далее идут N входных документов – непустых строк, содержащих только строчные английские буквы. Сумма длин всех строк не превышает 106. Выходные данные Выведите элементы результирующего множества в лексикографическом порядке Примеры Входные данные 3 2 3 Выходные данные ba Входные данные 2 1 5 Выходные данные Входные данные 2 1 5 Выходные данные b | |||||||
|