1106. 蚯蚓

1106. 蚯蚓

暂无测试数据。

题目描述

有一天 lzz 和 hxy 去看蚯蚓。
突然他们看到了一条巨蚯蚓。
他们被稀有的巨蚯蚓吸引了。
巨蚯蚓有很多的性质,
它可以随意分裂和连接。
而且巨蚯蚓身上每一节都有一个数字。
lzz 和 hxy 一共看了 \(m\) 个时刻才离去。
每个时刻都会发生一个事件。
现在,lzz 自豪地告诉你巨蚯蚓的长度和形态,
以及 \(m\) 个时刻内这 \(m\) 个事件的先后顺序,
你要对应每一次 lzz 的询问,
回答他的问题。

输入

第一行,输入两个整数 \(n,m\),分别表示巨蚯蚓的长度和过去的时间。

第二行,输入n个整数,表示从后往前输入巨蚯蚓的每一节上的数。

后面 \(m\) 行,每行 \(1~3\) 个整数。
其中第一个整数设为 \(a\)。
当 \(a=0\) 时,这一行还有两个整数 \(b,c\),
表示 lzz 往后数了 \(b\) 条蚯蚓,hxy 往后数了 \(c\) 条蚯蚓。

当 \(a=1\) 时,这一行还有一个整数 \(b\),
表示lzz将他面前那条蚯蚓切成两段,
而且前面那一段长度为 \(b\),
若这条蚯蚓的长度不足 \(b\)( \leq b),则输出 "error!"。
否则就将蚯蚓分成两段,
前面那一段(长为 \(b\))放在当前这个位置,
剩下那一段插到当前位置的下一个位置。
然后lzz会站到下一个位置去。

当 \(a=2\) 时,这一行还有一个整数 \(b\),
表示 lzz 将他面前那条蚯蚓切成两段,前面那段长为 \(b\),
如果这条蚯蚓长度不足b( \leq b),则不切。
然后将 hxy 面前的蚯蚓放到 lzz 切开的两条蚯蚓之间(若长度不足 \(b\) 无法切则放到lzz面前的蚯蚓后面),
然后这三条(两条)蚯蚓会连在一起,这时 hxy 走到 lzz 所在位置。
如果 lzz 和 hxy 站在一起,那么输出 "error!"。
然后跳过这一次操作。

当 \(a=3\) 时,lzz 和 hxy 交换他们的位置。

当 \(a=4\) 时,hxy 面前的蚯蚓将它的头断掉,然后连到它的尾部。

当 \(a=5\) 时,表示 lzz 询问你他面前的蚯蚓身上的数字。
你需要输出一行数字,依次表示lzz面前的蚯蚓身上的数字。

注:
一开始只有一条蚯蚓,lzz和hxy都站在它的面前。
但是即使如此也可以往后数的(可以认为是蚯蚓们都站成一个圈,一定能往后数)。

输出

对于每一个 \(a=1\) 或 \(a=2\) 的操作,无法操作的输出一行 "error!"
对于每一个 \(a=5\),从头到尾依次输出 lzz 面前蚯蚓身上的数字。

样例输入

10 10
10 9 8 7 6 5 4 3 2 1
5
1 1
0 0 2
0 6 7
5
0 6 3
0 2 4
1 3
1 5
5

样例输出

1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10
10

数据范围限制

\(1 \leq n,m \leq 2 \times 10^4\)

来源

基础篇补充4.7

信息

ID
1105
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者