Ограничения: время – 2s/4s, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Известно, что многие современные IDE имеют широкую поддержку рефакторинга -- набор действий,
которые могут выполняться автоматически при нажатии одной кнопки.
Рассмотрим один из видов рефакторинга: переименование. Переименование -- это процесс сохранения
целостности кода после изменения идентификатора. После запуска рефакторинга
переименования IDE ищет ссылки на переименованный идентификатор и применяет к ним те же изменения.
В этой задаче мы будем изменять исходный код только с помощью рефакторинга переименования.
Мы можем делать следующие действия:
* Замена всех вхождений слова под курсором новым словом.
* Удаление одного слова под курсором (с символом пробела после этого слова). Другие случаи появления того же слова остаются нетронутыми.
* Печать фрагмента кода, который начинается с указанной позиции и имеет указанную длину.
Будем считать, что слово находится «под курсором», если курсор указывает на символ слова
или на пробел сразу после слова.
Исходный код - это одна строка, состоящая из латинских букв, цифр и одинарных пробелов.
Первая строка входного файла содержит строку исходного кода `S`. Ее длина не превышает `10^5`. `S` состоит из латинских букв,
цифр и пробелов. `S` не начинается и не заканчивается пробелом.
Вторая строка входного файла содержит количество запросов `Q` (`1 <= Q <= 10^5`).
Следующие `Q` строк содержат описания запросов, по одной строке на запрос.
Каждая строка соответствует одному из следующих форматов:
* ``REPLACE`` `p_i` `s_i`\
Обозначает запрос замены слова под позицией `p_i` на новое слово `s_i`. Строка `s_i` состоит только из
латинских букв и цифр. Длина `s_i` не превышает `10^5`.
* ``REMOVE`` `p_i`\
Обозначает запрос на удаление слова в позиции `p_i`.
* ``PRINT`` `b_i` `l_i`\
Обозначает запрос печати фрагмента длины `l_i` (`l_i > 0`), который начинается в позиции `b_i`.
Позиции символов во всех запросах нумеруются с нуля. Все позиции и интервалы не нарушают
текущих границ текста, а общая длина печатаемых фрагментов не превышает `10^5`.
Также общий размер входного файла не превышает 1 MiB.
Для каждого запроса на печать вы должны вывести строку с нужным фрагментом.
```sample Пример ввода
if a1 equals b then
5
REPLACE 4 A2
PRINT 3 5
REPLACE 12 less
REMOVE 13
PRINT 0 12
```
```sample Пример вывода
A2 eq
if A2 less b
```