Текстовый редактор

Просмотр в формате PDF

Submit solution


Очки: 170
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Автор:
Problem types
Allowed languages
C++

Студент набирает текст в простом текстовом редакторе.

Редактор хранит одну строку текста и позицию курсора — целое число от 0 до текущей длины строки включительно. Позиция 0 означает, что курсор стоит перед первым символом, а позиция, равная длине строки, — после последнего символа.

Изначально строка пуста, курсор находится в позиции 0. Также в редакторе есть буфер обмена, который изначально пуст.

Поддерживаются следующие команды:

  • INS c — вставить символ c в позицию курсора, после чего курсор сдвигается на одну позицию вправо.
  • LEFT — если курсор не находится в позиции 0, сдвинуть его на одну позицию влево.
  • RIGHT — если курсор не находится в конце строки, сдвинуть его на одну позицию вправо.
  • BS — если курсор не находится в позиции 0, удалить символ непосредственно слева от курсора, после чего курсор сдвигается на одну позицию влево.
  • DEL — если курсор не находится в конце строки, удалить символ непосредственно справа от курсора. Положение курсора при этом не меняется.
  • HOME — переместить курсор в позицию 0.
  • END — переместить курсор в конец строки.
  • COPY l r — скопировать в буфер обмена подстроку текущего текста с позиций l..r-1. Предыдущее содержимое буфера обмена полностью заменяется. Если l == r, в буфер записывается пустая строка.
  • PASTE — вставить содержимое буфера обмена в позицию курсора. После этого курсор сдвигается вправо на длину вставленного текста.

Если команда не может быть выполнена, она просто игнорируется, и состояние редактора не меняется. Например, так происходит для команды LEFT в позиции 0 или для команды COPY, если диапазон выходит за границы текущей строки.

Требуется выполнить все команды и вывести итоговое содержимое строки.

Входные данные

В первой строке задано целое число q — количество команд.

В следующих q строках записано по одной команде в одном из форматов, описанных выше.

Для команды INS c символ c — произвольный печатаемый символ ASCII с кодом от 33 до 126, кроме пробела.

Для команды COPY l r числа l и r — целые, 0 <= l <= r <= 10^9. Если для текущей строки диапазон копирования некорректен, команда игнорируется.

Выходные данные

Выведите итоговую строку после выполнения всех команд.

Если строка пуста, выведите пустую строку.

Ограничения

  • 1 <= q <= 2 * 10^5
  • В любой момент времени суммарная длина текста не превышает 10^6 символов.

Примеры

Пример 1

Входные данные

1
INS a

Выходные данные

a
Пример 2

Входные данные

6
INS a
INS b
LEFT
INS X
RIGHT
INS c

Выходные данные

aXbc

Комментарии

Еще нет ни одного комментария.