#13. 差分

差分

输入一个长度为 nn 的整数序列。

接下来输入 mm 个操作,每个操作包含三个整数 l,r,cl, r, c,表示将序列中 [l,r][l, r] 之间的每个数加上 cc

请你输出进行完所有操作后的序列。

输入格式

第一行包含两个整数 nnmm

第二行包含 nn 个整数,表示整数序列。

接下来 mm 行,每行包含三个整数 lrcl,r,c,表示一个操作。

输出格式

共一行,包含 nn 个整数,表示最终序列。

数据范围

1n,m1000001 \le n,m \le 100000,
1lrn1 \le l \le r \le n,
1000c1000-1000 \le c \le 1000,
1000整数序列中元素的值1000-1000 \le 整数序列中元素的值 \le 1000

输入样例:

6 3
1 2 2 1 2 1
1 3 1
3 5 1
1 6 1

输出样例:

3 4 5 3 4 2

数据 1(样例结构+额外单点操作):基础正确性;卡“区间端点没算进去/单点区间处理错/累加顺序错”。

数据 2(n=1,多次操作):卡最小边界、差分数组越界、以及多次叠加是否正确。

数据 3(全 0 + 操作相互抵消):卡“忘记清零/前缀累加写错/操作叠加次序不影响但实现却受影响”的错误。

数据 4(覆盖两端 + (1,1) 与 (n,n)):重点卡 diff[r+1] 的处理(r=n 时是否越界)、以及 l=1 的边界。

数据 5(大量重叠 + 负 c + 极值 c=1000):卡重叠区间叠加、负数处理、以及结果范围不大但实现易错。

数据 6(n=50, m=2000 随机):综合卡各种实现细节;也能卡一些“写成 O(n*m) 虽然不一定 TLE 但容易暴露逻辑 bug”。

数据 7(n=1e5, m=1e5 结构化):强力卡复杂度:暴力逐操作更新区间会 TLE;正确应 O(n+m) 差分。

数据 8(n=1e5, m=1e5,频繁触边):强力卡边界与性能:大量 l=1 或 r=n,专门卡 r+1 越界、数组开小、I/O 慢等问题。

数据 9(n=1e5 单点操作满负载):卡“把区间当成左闭右开/端点不含/下标偏移(1-based 写成 0-based)”等;同时 m=1e5 压测性能。