#arc0304. [arc030_4]グラフではない
[arc030_4]グラフではない
问题描述
给定长度为 的数列 ,考虑对该序列进行 次查询操作。查询操作有 种类型,如下所示。
1 a b v
― 在数列 的区间 \[a,b\] 中的每个元素都加上相同的值 。2 a b c d
― 将数列 的区间 \[a,b\] 替换为当前查询时区间 \[c,d\] 中的值。保证 。更严格地说,假设查询操作后得到的序列为 ,则 ,,…,。对于不在 \[a,b\] 区间内的 ,有 。3 a b
― 求数列 区间 \[a,b\] 内的值的总和。
你需要编写一个程序按顺序处理这些查询。
输入
输入数据以以下格式从标准输入中给出。
… :
- 第 行包含两个整数,分别表示数列 的长度 和查询的次数 。
- 第 行包含 个整数,表示数列 的第 个元素的值 ,每个值之间用空格隔开。
- 第 行到第 行,给出了如问题描述中所述的查询。每行以
1 a b v
、2 a b c d
或3 a b
的格式给出。保证 ,,,。
输出
对于每个形式为 3 a b
的查询,按照给定顺序输出答案。每个答案占一行,并进行换行。
示例输入1
5 5
1 2 3 4 5
3 1 5
1 1 3 1
3 1 3
2 1 3 2 4
3 1 5
示例输出1
15
9
20
- 第一个查询输出 \[1,5\] 区间的和,即 。
- 第二个查询在 \[1,3\] 区间中每个元素上加 ,执行该操作后,。
- 第三个查询输出 \[1,3\] 区间的和,即 。
- 第四个查询将 \[2,4\] 区间中的值复制到 \[1,3\] 区间,执行该操作后,。
- 第五个查询输出 \[1,5\] 区间的和,即 。
示例输入2
10 30
-5 -5 -2 -1 2 -2 0 -4 2 5
2 9 10 9 10
2 3 5 2 4
1 2 10 -1
2 1 7 1 7
3 1 4
2 1 6 2 7
2 5 8 6 9
3 4 8
3 1 10
3 9 9
1 3 8 -1
2 4 9 1 6
3 2 7
1 9 10 -4
1 6 9 -5
1 4 6 -7
3 2 5
2 10 10 7 7
1 3 4 -10
3 4 9
3 8 9
2 6 7 8 9
3 3 5
3 3 9
1 2 10 -10
2 4 6 4 6
2 4 9 5 10
1 2 6 7
3 7 8
1 3 6 3
示例输出2
-20
-8
-18
1
-29
-36
-78
-18
-50
-86
-38