#P8659. [蓝桥杯 2017 国 A] 数组操作

[蓝桥杯 2017 国 A] 数组操作

题目描述

给出一个长度为 nn 的数组 {A}\{A\},由 11nn 标号,你需要维护 mm 个操作。

操作分为三种,输入格式为:

1 L R d,将数组中下标 LLRR 的位置都加上 dd,即对于 LiRL \le i \le R,执行 A[i]A[i]+dA[i]\leftarrow A[i]+d

2 L1 R1 L2 R2,将数组中下标为 L1L_1R1R_1 的位置,赋值成 L2L_2R2R_2 的值,保证 R1L1=R2L2R_1-L_1=R_2-L_2

换句话说先对 0iR2L20 \le i \le R_2-L_2 执行 BiAL2+iB_i\leftarrow A_{L_2+i},再对 0iR1L10 \le i \le R_1-L_1 执行 AL1+iBiA_{L_1+i}\leftarrow B_i,其中 {B}\{B\} 为一个临时数组。

3 L R,求数组中下标 LLRR 的位置的和,即求出 i=LrAi\sum\limits_{i=L}^{r}A_i

输入格式

从标准输入读入数据。

第一行一个整数 Case,表示测试点编号,其中 Case 为 00 时表示该点为样例。

第二行包含两个整数 n,mn,m。保证 1n,m1051 \le n,m \le 10^5

第三行包含 nn 个整数 AiA_i,表示这个数组的初值。保证 0Ai1050 \le A_i \le 10^5

接下来 mm 每行描述一个操作,格式如问题描述所示。

对于操作中提到每个数,满足 0d1050 \le d \le 10^51LRn1 \le L \le R \le n1L1R1n1 \le L_1 \le R_1 \le n1L2R2n1 \le L_2 \le R_2 \le nR1L1=R2L2R_1-L_1=R_2-L_2

输出格式

对于每次 3 操作输出一行一个数,表示求和的结果。

0
5 6
1 2 3 4 5
2 1 3 3 5
3 3 5
1 2 4 2
3 3 5
2 1 3 3 5
3 1 5
14
18
29

提示

测试点 nnmm 其他约束
1,2 103\le10^3
3,4 105\le10^5 没有 2 操作
5,6,7 nn 为偶数,且所有 2 操作满足 L1=1L_1=1,R1=n2R_1=\lfloor\frac{n}{2}\rfloorL2=n2+1L_2=\lfloor\frac{n}{2}\rfloor+1R2=nR_2=n
8,9,10

对于 100%100\% 的评测用例,1n1051 \le n \le 10^50ai<bi100000 \le a_i<b_i \le 10000