#6725. 实时区间统计系统

实时区间统计系统

题目 7:实时区间统计系统

题目描述

某数据分析系统需要维护一组长度为 n 的整数数据:

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

系统初始化时,已经记录了每个位置的数据值。

在运行过程中,数据会不断发生变化,同时系统需要回答多个区间统计请求。

系统支持两种操作:


操作类型 1:数据调整

输入:

1 i x

表示:

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

即:

ai=ai+xa_i=a_i+x

其中:

  • x 可以为正数,也可以为负数;
  • 修改后数据可能发生变化。

操作类型 2:区间统计

输入:

2 l r

表示:

统计编号从 lr 的所有数据之和:

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

并输出统计结果。


请编写程序,帮助系统完成所有操作。


输入格式

第一行包含两个整数:

n m

表示:

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

第二行包含 n 个整数:

a1 a2 ... an

表示初始数据。

接下来 m 行,每行表示一次操作:

若操作为修改:

1 i x

表示第 i 个数据增加 x

若操作为查询:

2 l r

表示查询区间:

[l,r][l,r]

的数据总和。


输出格式

对于每一次类型为:

2 l r

的操作,输出一行答案。


数据范围

对于所有测试数据:

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

保证所有区间查询结果均在 long long 范围内。


样例输入

5 5
1 2 3 4 5
2 1 5
1 3 10
2 2 4
1 5 -2
2 4 5

样例输出

15
19
7

样例解释

初始数据:

a = [1,2,3,4,5]

第一次操作

2 1 5

查询:

a1+a2+a3+a4+a5a_1+a_2+a_3+a_4+a_5

即:

1+2+3+4+5=151+2+3+4+5=15 输出:

15

第二次操作

1 3 10

表示:

第 3 个位置增加 10

变化:

a3=3+10=13a_3=3+10=13

数组变为:

a = [1,2,13,4,5]

第三次操作

2 2 4

查询:

a2+a3+a4a_2+a_3+a_4 即:

2+13+4=192+13+4=19

输出:

19

第四次操作

1 5 -2

表示:

第 5 个位置减少 2

数组变为:

a = [1,2,13,4,3]

第五次操作

2 4 5

查询:

a4+a5a_4+a_5

即:

4+3=74+3=7

输出:

7