远离故土,步入虚空,你面前唯一的道路将你引向未知的深处。别将这荒野的瑰丽景色误认为和平的象征,暗影中的敌人会在你懈惫之时猛然来袭。—— Minecraft Dungeons: Echoing Void
支配之球的碎片被盗,末地已被污染,踏进末地传送门,拯救世界!
末地被支配之球的碎片切出了一条狭长的巨型裂缝,就连虚空都为之悸动。这个裂缝达到 n 个区块,末地的自然之力和支配之球的邪恶之力在每一寸空间中对抗...
已知初始状态下,每个区块的能量值。
在接下来的 m 分钟,两种力量之一会作用于这个裂缝:
对于一个连续区间 [l, r],区间内的所有区块的能量值减少 1。
对于一个连续区间 [l, r],区间内的所有区块的能量值增加 1。
而你,我的朋友,拥有一个名为 ReLU 的魔法,这个魔法可以缝合裂缝,使所有当前能量值为负数的区块能量值归零,此后两种力量不再对这片区域产生影响。
你当然可以随时修复这片区域,但你也想借着这份机遇,给这片区域留下更充沛的能量。因此,你需要实时追踪裂缝的状态。在每分钟能量值变化之后,你都需要立即计算出当前所有能量值大于 0 的区块的能量值总和是多少。
形式上,给定长度为 n 的数组 a,和 m 次操作。
每次操作给定 l, r,使得 a_l 到 a_r 内的每一个数增加或减少 1,询问操作后整个数组所有正数之和,操作是持久生效的。
输入
第一行输入两个正整数 n,m (1 \leq n,m \leq 10^5),- 区块的数量,以及操作事件的发生次数。
第二行输入 n 个整数,第 i 个整数 a_i (|a_i| \leq 10^9) 表示第 i 个区块的初始能量值。
接下来的 m 行,每行 3 个整数,op, l, r (0 \leq op \leq 1, 1 \leq l \leq r \leq n),op=0 表示被区间 [l,r] 被邪恶之力减少 1 点能量值,op=1 表示被区间 [l,r] 被自然之力增加 1 点能量值。
输出
输出 m 行,每行一个整数,表示每次事件发生后,所有能量值大于 0 的区块能量值总和。
样例
| 标准输入 复制文本 |
10 10 -1 10 9 4 9 -10 -6 -2 8 0 0 1 2 1 7 8 1 7 10 1 5 7 0 5 9 0 2 8 0 10 10 0 8 9 0 1 4 0 2 4 |
| 标准输出 复制文本 |
39 39 41 42 40 36 35 34 31 28 |