#6622. 动态区间统计

动态区间统计

题目 6:动态区间统计

题目描述

某数据统计系统需要维护一个长度为 (n) 的整数序列:

a1,a2,,ana_1,a_2,\cdots,a_n

初始时:

a1=a2==an=0a_1=a_2=\cdots=a_n=0

系统需要处理 (m) 次数据变化和统计请求。

每次操作有以下两种类型:


操作类型 1:数据增加

输入:

1 i x

表示:

将第 (i) 个位置的数据增加 (x)。

即:

ai=ai+xa_i=a_i+x


操作类型 2:区间统计

输入:

2 l r

表示:

统计编号从 lr 的数据总量:

al+al+1++ara_l+a_{l+1}+\cdots+a_r

并输出结果。


请你编写程序,实时完成所有统计任务。


输入格式

第一行输入两个整数:

n m

表示:

  • (n):数据数量;
  • (m):操作次数。

接下来 (m) 行,每行表示一次操作。

若操作为增加:

1 i x

其中:

  • (i) 表示位置;
  • (x) 表示增加量。

若操作为查询:

2 l r

其中:

  • (l,r) 表示查询区间。

输出格式

对于每一次类型为 2 的操作:

输出一行整数,表示:

al+al+1++ara_l+a_{l+1}+\cdots+a_r


数据范围

对于所有测试数据:

1 ≤ n,m ≤ 100000
1 ≤ i ≤ n
1 ≤ l ≤ r ≤ n
-10^9 ≤ x ≤ 10^9

保证所有答案均在 long long 范围内。


样例输入

5 7
1 1 3
1 3 5
2 1 3
1 2 4
2 2 3
1 5 10
2 1 5

样例输出

8
9
22

样例解释

初始:

a = 0,0,0,0,0

执行:

1 1 3

表示:

a1=a1+3a_1=a_1+3

数组:

3,0,0,0,0

执行:

1 3 5

数组:

3,0,5,0,0

执行:

2 1 3

查询:

a1+a2+a3a_1+a_2+a_3

即:

3+0+5=8

输出:

8

执行:

1 2 4

数组:

3,4,5,0,0

执行:

2 2 3

查询:

2+a3_2+a_3

即:

4+5=9

输出:

9

执行:

1 5 10

数组:

3,4,5,0,10

执行:

2 1 5

查询:

3+4+5+0+10=223+4+5+0+10=22

输出:

22