#M080. 线段树历史和
线段树历史和
题目描述
这是一道模板题。
您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:
- 区间加一个数;
- 查询区间的历史和;
历史和定义为数列 的区间和:初始 ,在每次操作(修改或查询,具体可参考样例解释)完成后,对所有 。
输入格式
第一行两个数 ,表示长度为 的有序序列和 个操作。
第二行有 个数,表示有序序列 。
下面有 行,每行第一个数表示操作类型:
- 之后有三个数 表示将在区间 之间的值都加上 ;
- 之后有两个数 表示查询区间 的历史和。
输出格式
对于每个操作 各输出一行,表示查询结果。
5 6
5 2 13 12 9
2 3 5
1 1 3 17
2 1 2
2 1 4
2 4 5
1 4 5 9
34
55
230
105
10 10
8 9 2 6 2 8 8 3 10 6
1 7 9 8
2 2 6
2 1 8
2 8 10
1 3 8 10
2 5 8
2 8 9
1 8 9 1
2 5 10
2 5 6
54
170
124
246
207
687
200
数据范围与提示
对于 的数据,;
对于 的数据,;
对于 的数据,。