#P13727. 文字处理软件

提交4 通过1
通过率25%
时间限制1000ms
内存限制256MiB

题目描述

题目背景

请实现一个简化的文字处理程序。程序维护一份不含空格的文档,并按照输入顺序执行追加、截取、插入和查找操作。

题目描述

字符串下标从 00 开始。设当前文档为字符串 SS,需要支持以下四种操作:

  1. 1 str:把字符串 str 追加到 SS 的末尾,然后输出修改后的 SS
  2. 2 a b:只保留 SS 中从下标 aa 开始、连续的 bb 个字符,然后输出截取后的 SS
  3. 3 a str:在 SS 原下标 aa 所指字符的前面插入 str,然后输出修改后的 SS。当 a=0a=0 时表示插到最前面;
  4. 4 str:在 SS 中查找连续子串 str 第一次出现的起始下标。找到则输出该下标,否则输出 1-1。此操作不修改 SS

所有操作均按给定顺序执行,后一次操作处理的是前一次操作结束后的文档。

输入格式

第一行一个整数 qq,表示操作次数。

第二行一个不含空格的字符串,表示初始文档。

接下来 qq 行,每行描述一次操作,格式与题目描述中的四种格式之一相同。

输出格式

共输出 qq 行,每次操作对应一行:

  • 操作 1,2,31,2,3 输出修改后的完整文档;
  • 操作 44 输出第一次匹配位置,找不到时输出 1-1

输入样例 #1

4
abc
1 bcyb
2 1 6
3 0 q
4 bcb

输出样例 #1

abcbcyb
bcbcyb
qbcbcyb
1

样例说明 #1

第一次操作将 bcyb 追加到 abc 后。第二次操作从下标 11 开始保留 66 个字符。第三次操作在文档开头插入 q。最后,子串 bcb 第一次出现的位置是下标 11

输入样例 #2

5
hello
4 ll
4 zz
1 hi
2 1 4
3 2 X

输出样例 #2

2
-1
hellohi
ello
elXlo

输入样例 #3

4
abc
3 0 z
2 0 1
1 zz
4 z

输出样例 #3

zabc
z
zzz
0

数据范围与约定

  • 1q1001\le q\le100
  • 初始字符串长度不超过 100100
  • 初始字符串以及操作中的 str 均不含空格和换行;
  • 所有截取和插入位置均合法;
  • 下标从 00 开始,截取的第二个参数 bb 表示字符数量,不是结束下标。