Задача
Есть набор строк, который изначально пуст. Необходимо обрабатывать три различные операции над этим набором строк:
- 1 s: Добавить данную строку в набор.
- 2 k l: Узнать, существуют ли в наборе k строк (не обязательно различных) таких, что они имеют общий суффикс длины l. Этот суффикс не обязан быть наибольшим.
- 3 i: Удалить строку из набора, которая была добавлена в i-й операции (если она еще не была удалена).
Входные данные:
В первой строке дано одно целое число - количество операций q (1 <= q <= 10
5), которые необходимо обработать.
Далее в каждой строке дано описание запроса. Сперва это число 1, 2 или 3, обозначающее тип запроса.
Если это запрос первого типа, то далее дана строка s, суммарная длина которых не превышает 10
5.
Если это запрос второго типа, то далее дано два целых числа k и l (1 <= k, l <= 10
5).
Если это запрос третьего типа, то далее дано число i (1 <= i <= номер текущей операции), где i - номер операции первого типа.
Выходные данные:
Для каждого запроса второго типа выведите в отдельной строке слово "YES", если существуют необходимые строки, и "NO" в противном случае.
Пример:
Входные данные |
Выходные данные |
9
1 aba
1 accba
2 2 2
2 2 3
1 aaaa
1 ababa
2 3 2
3 1
2 3 2 |
YES
NO
YES
NO |