#12763. 能量日志回放系统

能量日志回放系统

能量日志回放系统

题目描述

你正在维护一条长度为 n 的能量轨道,第 i 个位置的能量值记为 a[i]

系统会不断产生操作日志,你需要 ​按照输入顺序实时处理这些日志​,并在需要时立即输出查询结果。

日志共有两种类型:

操作 1 l r v 表示一次 ​范围校准事件​: 将区间 [l, r] 内所有位置的能量值 ​**同时增加 v**​(v 可能为负数)。

操作 2 x 表示一次 ​瞬时检测​: 需要 立刻输出当前位置 x 的当前能量值。

注意:

  • 所有操作必须 ​按顺序执行​。
  • 每次查询结果都依赖于之前所有操作。
  • 由于数据规模较大,直接对区间逐个修改会导致程序超时。

输入格式

第一行输入两个整数:

n q

表示轨道长度和操作数量。

第二行输入 n 个整数:

a1 a2 ... an

表示初始能量值。

接下来 q 行,每行表示一条操作日志:

1 l r v

2 x

输出格式

对于每一条 2 x 操作,输出一行一个整数,表示当时 a[x] 的值。


数据范围

1 ≤ n, q ≤ 200000
1 ≤ l ≤ r ≤ n
1 ≤ x ≤ n
-10^9 ≤ v ≤ 10^9

初始数组与中间结果可能超过 32 位整数范围,请使用 long long


样例输入

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

样例输出

3
13
-2
2

样例解释

初始数组

[1, 2, 3, 4, 5]

操作 2 3

a[3] = 3

操作 1 2 4 10

[1, 12, 13, 14, 5]

操作 2 3

a[3] = 13

操作 1 1 5 -3

[-2, 9, 10, 11, 2]

操作 2 1

a[1] = -2

操作 2 5

a[5] = 2