eolymp
bolt
Try our new interface for solving problems

Язык

Прибыв в Антарктиду, Шкипер, Рико, Прапор и Ковальски обнаружили, что совершенно не понимают, о чём им говорят местные пингвины. Шкипер поручил Прапору, как самому умному, разобраться с языком местных, чтобы можно было получать от них оперативные данные. Недолго думая, Прапор записал все встреченные фразы местных в виде одной длинной последовательности звуков, обозначая звуки строчными латинскими буквами. Таким образом он получил строку \textbf{s} из \textbf{n} строчных латинских букв1. После этого Прапор принялся за анализ этой строки: менял в ней символы, переставлял подстроки из одного места в другое, сравнивал подстроки другс другом... В какой-то момент Прапор окончательно запутался и попросил Вас о помощи. Все операции, проводимые со строкой, Прапор аккуратно записывал на листе бумаги, получив список из \textbf{m} записей следующего вида: \begin{itemize} \item \textbf{S i c} --- если Прапор заменил букву на \textbf{i}-той позиции строки на букву \textbf{c}. \item \textbf{M i j k} --- если Прапор вырезал подстроку исходной строки с \textbf{i}-й позиции по \textbf{j}-ю и переместилеё после символа с номером \textbf{k}. При этом число \textbf{k} задаёт позицию символа в строке после того, как из неё удалили подстроку \textbf{s\[i..j\]}. Если \textbf{k = 0}, значит вырезанную подстроку требуетсяпоместить в начало результирующей строки. \item \textbf{C i j l} --- если Прапор сравнил подстроки \textbf{s\[i..i+l-1\]} и \textbf{s\[j..j+l-1\]}. \item \textbf{P} --- если Прапор переписал строку, полученную на текущий момент, на листок с результатами. \end{itemize} К сожалению, Прапор потерял листок с результатами, а без него язык местных понять будет невозможно. Помогите ему восстановить результаты проведённых операций. \InputFile В первой строке входного файла содержатся два числа \textbf{n} и \textbf{m} --- длина строки, записанной Прапором и количество операций, которые он провёл над ней, соответственно (\textbf{1} ≤ \textbf{n}, \textbf{m} ≤ \textbf{10^5}). Во второй строке находится \textbf{n} строчных латинских букв --- исходная строка, записанная Прапором. Далее \textbf{m} строк содержат описания действий Прапора в формате, указанном выше. Гарантируется, что все индексы лежат в допустимом диапазоне, при задании подстроки \textbf{i} ≤ \textbf{j}. Символы в строке нумеруются числами от \textbf{1} до \textbf{n}, символ, стоящий на \textbf{i}-том месте обозначается \textbf{s\[i\]}. Напомним, что подстрокой \textbf{s\[i..j\]} строки \textbf{s} называется строка, составленная из символов \textbf{s\[i\]}, \textbf{s\[i+1\]} ... \textbf{s\[j\]}. \OutputFile Выведите по одной строке для каждой операции сравнения или переписывания. Для каждой операции сравнения, проведённой Прапором, выведите "\textbf{+}", если сравниваемые подстроки оказались равны и "\textbf{-}" в противном случае. Для каждой операции переписывания выведите текущее состояние строки на момент проведения этой операции. Гарантируется, что суммарный объём выводимых данных (без учёта переводов строки) не будет превосходить одного мегабайта.
Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 256 MiB
Giriş verilənləri #1
7 6
abacaba
C 1 5 3
M 4 4 0
P
C 1 5 3
M 1 1 3
P
Çıxış verilənləri #1
+
cabaaba
-
abacaba
Mənbə Яндекс, отбор ЗКШ 2011-2012, 1 тур