题目背景
搬运序列
题目描述
有一个序列 a1∼n 和若干操作。
- 1 l r :求 al 到 ar 的和。
- 2 l r val :将 al 到 ar 赋值为 val。
- 3 l r val :将 al 到 ar 加上 val。
- 4 l1 r1 l2 r2:将 al1 到 ar1 复制到 al2 到 ar2 处。
- 5 l1 r1 l2 r2:将 al1 到 ar1 与 al2 到 ar2 交换。
- 6 l r :将 al 到 ar 翻转。
输入格式
第一行两个数 n 和 m,为序列长度和操作个数。
第二行 n 个数,为 a1∼n。
下面 m 行,每行为操作种类和相应的若干整数。
输出格式
若干行,对于每个 1 操作,输出答案。
由于答案可能过大,对 109+7 取模。
最后一行输出序列 a1∼n。当然也要取模。
10 10
7 1 3 2 2 4 0 1 2 2
4 10 10 3 3
3 4 10 5
6 6 7
6 9 10
1 10 10
5 9 10 6 7
2 8 10 0
5 4 4 5 5
5 2 4 8 10
3 3 9 0
7
7 0 0 0 7 7 7 1 2 7
提示
请注意常数优化。
对于 4 和 5 操作,保证 r1−l1=r2−l2 且区间不重叠。
保证数据随机。
对于 30% 的数据,保证 n,m≤103 。
对于 50% 的数据,保证 n,m≤5×104 。
对于 70% 的数据,保证 n,m≤1.5×105 。
对于 100% 的数据,保证 n,m≤3×105 , 0≤ai,val<109+7。