问题 3502 --线段树(区间修改,区间查询)

3502: 线段树(区间修改,区间查询)

时间限制: 1 Sec  内存限制: 256 MB
提交: 21  解决: 7
[提交][状态][讨论版][命题人:]

题目描述

如题,已知一个数列,你需要进行下面两种操作:

1、将某区间每一个数加上k

2、求出某区间每一个数的和。

输入

第一行包含两个整数n,m,分别表示该数列数字的个数和操作的总个数。

第二行包含n个用空格分隔的整数,其中第i个数字表示数列第i项的初始值ai。

接下来m行每行包含3或4个整数,表示一个操作,具体如下:

1、1 x y k:将区间[x,y] 内每个数加上k

2、2 x y:输出区间[x,y] 内每个数的和。

输出

输出包含若干行整数,即为所有操作 2 的结果。

样例输入

5 5
1 5 4 2 3
2 2 4
1 2 3 2
2 3 4
1 1 5 1
2 1 4

样例输出

11
8
20

提示

对于30%的数据:n<=8,m<=10

对于70%的数据:n<=10^3m<=10^4

对于100%的数据:1<=n,m<=10^5,-10^9<=ai,k<=10^9

来源

[提交][状态]