#6625. 区间加法,单点查询(9)
区间加法,单点查询(9)
题目 9:区间加法,单点查询
题目描述
给定一个长度为 n 的数组,初始时所有元素都为 0。
现在有 m 次操作:
1 l r x:将 a[l], a[l+1], ..., a[r] 全部增加 x
2 i:查询 a[i]
输入格式
第一行两个整数:
n m
接下来 m 行,每行一个操作。
输出格式
对于每个操作 2,输出一行答案。
数据范围
1 ≤ n, m ≤ 100000
1 ≤ l ≤ r ≤ n
1 ≤ i ≤ n
-10^9 ≤ x ≤ 10^9
样例输入
5 6
1 2 4 3
2 1
2 2
1 3 5 2
2 4
2 5
样例输出
0
3
5
2
样例解释
初始:
a = [0, 0, 0, 0, 0]
执行:
1 2 4 3
数组变为:
a = [0, 3, 3, 3, 0]
执行:
1 3 5 2
数组变为:
a = [0, 3, 5, 5, 2]
提示
可以维护差分数组 d。
区间加法:
a[l..r] += x
等价于:
d[l] += x
d[r + 1] -= x
查询 a[i]:
a[i] = d[1] + d[2] + ... + d[i]