2025 SCNUCPC

Problem I. 虚空回响

远离故土,步入虚空,你面前唯一的道路将你引向未知的深处。别将这荒野的瑰丽景色误认为和平的象征,暗影中的敌人会在你懈惫之时猛然来袭。—— Minecraft Dungeons: Echoing Void

题目背景

支配之球的碎片被盗,末地已被污染,踏进末地传送门,拯救世界!

题目描述

末地被支配之球的碎片切出了一条狭长的巨型裂缝,就连虚空都为之悸动。这个裂缝达到 n 个区块,末地的自然之力和支配之球的邪恶之力在每一寸空间中对抗...

已知初始状态下,每个区块的能量值。

在接下来的 m 分钟,两种力量之一会作用于这个裂缝:

  • 对于一个连续区间 [l, r],区间内的所有区块的能量值减少 1

  • 对于一个连续区间 [l, r],区间内的所有区块的能量值增加 1

而你,我的朋友,拥有一个名为 ReLU 的魔法,这个魔法可以缝合裂缝,使所有当前能量值为负数的区块能量值归零,此后两种力量不再对这片区域产生影响。

你当然可以随时修复这片区域,但你也想借着这份机遇,给这片区域留下更充沛的能量。因此,你需要实时追踪裂缝的状态。在每分钟能量值变化之后,你都需要立即计算出当前所有能量值大于 0 的区块的能量值总和是多少。

形式上,给定长度为 n 的数组 a,和 m 次操作。

每次操作给定 l, r,使得 a_la_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

登录以提交代码。
单点时限 2 秒
内存限制 1024 MB
提交 138
通过 2

A B C D E F G H I J K L