Logo
(追記) (追記ここまで)

28537번 - Самая страшная история 다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB111100.000%

문제

Маленький Джек решил написать самую страшную историю, чтобы напугать своих друзей на Хэллоуин.

Назовем историей непустую последовательность из слов, разделенных пробелами. Слово в истории --- непустая последовательность строчных букв латинского алфавита.

Как известно, на качество истории влияют не только слова, содержащиеся в ней, но и символы, содержащиеся в этих словах.

Джек уже составил историю из $n$ слов. Теперь он хочет совершить с этой историей $m$ операций, каждая из которых заключается либо в проверке того, насколько история страшная, либо в небольшом изменении этой истории. Формально, Джек может делать с историей четыре вида операций:

  • по номеру символа в истории узнать порядковый номер слова и позицию символа в этом слове;
  • по номеру слова и позиции символа в нем узнать его номер в истории;
  • вставить символ (букву или пробел) в определенную позицию в истории;
  • удалить символ на определенной позиции в истории.

Помогите Джеку быстро совершить с историей все операции, чтобы он мог наконец-то рассказать ее друзьям!

입력

В первой строке ввода через пробел даны два числа $n$ и $m$ --- количество слов в истории и количество операций (1ドル \leqslant n, m \leqslant 2 \cdot 10^5$).

В следующей строке записана история, написанная Джеком --- $n$ слов из строчных латинских букв, разделенные пробелами. Гарантируется, что суммарная длина слов не превышает 10ドル^5$.

В $i$ из следующих $m$ строк дано описание $i$-й операции:

  • <<?1 i>> --- найти номер слова и позицию в слове для символа под номером $i$ (1ドル \leqslant i \leqslant L,ドル где $L$ --- текущая длина истории);
  • <<?2 w p>> --- найти для $p$-го символа в $w$-м слове его позицию в истории (1ドル \leqslant w \leqslant W$; 1ドル \leqslant p \leqslant P,ドル где $W$ --- текущее количество слов, а $P$ --- длина $w$-го слова);
  • <<+ i c>> --- вставить символ $c$ на позицию $i$ в историю (1ドル \leqslant i \leqslant L$; $c$ --- строчная латинская буква или <<\_>> для пробела);
  • <<- i>> --- удалить $i$-й символ из истории (1ドル \leqslant i \leqslant L$).

Гарантируется, что ни в какой момент времени в истории нет двух пробелов подряд и нет пробела в начале, и что символы в запросах первого типа --- всегда буквы, а не пробелы.

출력

Для каждого запроса первого типа выведите в отдельной строке пару чисел $w$ и $p$ --- номер слова и позицию символа в нем. Для каждого запроса второго типа, аналогично, выведите в отдельной строке число $i$ --- позицию запрошенного символа в истории.

제한

예제 입력 1

3 16
hell spirits fear
?1 1
?2 3 1
+ 12 _
?2 3 1
+ 13 i
?1 13
?1 14
?1 16
?1 7
- 5
?1 7
?2 1 8
- 1
- 1
?2 2 1
?2 3 2

예제 출력 1

1 1
14
13
3 1
3 2
4 1
2 2
1 7
8
10
14

힌트

출처

Olympiad > Russian Olympiad in Informatics > Internet Olympiads in Informatics > 2022-2023 Season > November 12, 2022 > Advanced D번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /