题目背景
搬运序列
题目描述
有一个序列an和若干操作。
- 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个数,为ai。
下面m行,每行为操作种类和相应的若干整数。
输出格式
若干行,对于每个1操作,输出答案。
由于答案可能过大,对109+7取模。
最后一行输出序列an。当然也要取模。
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
提示
请注意常数优化
若是copy和swap操作,保证r1−l1=r2−l2且区间不重叠。
保证数据随机。
对于30%的数据,保证 n,m≤103 。
对于50%的数据,保证 n,m≤5×104 。
对于70%的数据,保证 n,m≤1.5×105 。
对于100%的数据,保证$\ n,m\le 3\times 10^5\ ,\ 0\le a_i,\mathrm{val}\lt Mod\ $。