eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Унікальні суфікси

Унікальні суфікси

У Вас є спочатку порожній рядок \textbf{s}. Далі поступає \textbf{q} запитів. Запити бувають двох типів: \begin{enumerate} \item Запит на додавання символу у кінець рядка \textbf{s}. Формат запиту має вид "\textbf{+ c}", де c --- символ, який потрібно дописати у кінець рядка \textbf{s}. \item Запит на перевірку унікальності суфікса рядка \textbf{s}. Формат запиту має вид "\textbf{? l}", де \textbf{l} --- довжина суфіксу поточного рядка \textbf{s}, який потібно перевірити на унікальність. Суфікс вважається унікальним, якщо він зустрічається у рядку \textbf{s} у якості підрядка рівно один раз (починаючи з позиції \textbf{|s|-l+1}, якщо рахувати символи рядка один-індекрованими). \end{enumerate} Ваша задача --- після кожного запиту другого типу, вивести "\textbf{+}", якщо заданий суфікс унікальний, або вивести "\textbf{-}">> у протилежному випадку. \InputFile У першому рядку записано єдине ціле число \textbf{q} (\textbf{1} ≤ \textbf{q} ≤ \textbf{2·10^6}) --- кількість запитів. У наступних \textbf{q} рядках записано запити у форматі, описаному в умові задачі. Гарантується, що усі запити коректні. Гарантується, що перший запит має перши тип. Гарантується, що символ \textbf{c} у кожному запиті першого типу є одним з символів "\textbf{a}", "\textbf{b}", "\textbf{c}", "\textbf{d}", "\textbf{e}". Гарантується, що число \textbf{l} в усіх запитах другого типу додатне і не більше поточної довжинт рядка \textbf{s}. \OutputFile Виведіть \textbf{q} рядків --- відповіді на запити другого типу. Відповіді на запити виводьте у порядку появи запитів у вхідних даних.
Ліміт часу 2.5 секунди
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
13
+ a
? 1
+ a
? 1
? 2
+ a
? 1
? 2
? 3
+ b
? 3
? 1
? 2
Вихідні дані #1
+
-
+
-
-
+
+
+
+
Джерело Зимова школа Харків 2013, День 6 - Г.Агапова та І.Фефера