loj#P3467. 「COCI 2021.2」Sjeckanje

「COCI 2021.2」Sjeckanje

题目描述

译自 COCI 2020/2021 Contest #5 T5「Sjeckanje」

定义一个序列的权值为这个序列的最大值减去最小值。

定义一个序列的分割权值和为将这个序列分成若干段(段数可以为 11)后,所有段的权值和的最大值。

举个例子:[4,3,3,4][4,3,3,4] 的分割权值和为分成 [4,3],[3,4][4,3],[3,4] 两段,即为 22

现有一个长为 nn 的序列 aa,有 qq 次操作,每次操作将所有 i[l,r]i\in[l,r],将 aia_i 加上 xx(换言之,将 al,al+1,,ara_l, a_{l+1}, \dots, a_r 分别加上 xx),在每次操作之后,你需要求出这个序列的分割权值和。

输入格式

第一行为两个整数 n,qn,q

接下来一行 nn 个整数 aia_i,表示初始序列 aa

接下来 qq 行,每行三个整数 l,r,xl,r,x,表示这次的操作要将所有 i[l,r]i\in[l,r],将 aia_i 加上 xx

输出格式

对于每次修改输出一行,表示您求出的这个序列的分割权值和。

4 3
1 2 3 4
1 2 1
1 1 2
2 3 1

2
2
0
4 3
2 0 2 1
4 4 1
2 2 3
1 3 2
2
1
3

数据范围与提示

对于所有子任务,有 1n,q2×1051\le n,q\le 2\times 10^5108ai,x108-10^8\le a_i,x\le 10^81lrn1\le l\le r\le n

子任务编号 特殊限制 分值
11 n,q200n,q\le 200 15/11015/110
22 n,q3×103n,q\le 3\times 10^3 40/11040/110
33 55/11055/110