#12767. 区间加法

区间加法

区间加法(Range Addition)

题目描述

给定一个长度为 n 的数组 A,初始时所有元素都为 0

接下来会有 k 次更新操作。 每次操作用三个整数表示:

startIndex endIndex inc

表示将数组中下标从 startIndexendIndex(包含两端)的所有元素 ​**同时增加 inc**​。

所有操作执行完成后,请输出最终数组。


输入格式

第一行包含两个整数:

n k
  • n 表示数组长度
  • k 表示操作数量

接下来 k 行,每行包含三个整数:

start end inc

表示一次区间更新操作。


输出格式

输出一行 n 个整数:

A0 A1 A2 ... A(n-1)

表示最终数组状态。

相邻数字之间用一个空格分隔。


数据范围

1 ≤ n ≤ 100000
0 ≤ k ≤ 10000
0 ≤ startIndex ≤ endIndex < n
-1000 ≤ inc ≤ 1000

样例

输入

5 3
1 3 2
2 4 3
0 2 -2

输出

-2 0 3 5 3

样例解释

初始数组:

[0, 0, 0, 0, 0]

操作 1:

[1,3] +2

数组变为:

[0, 2, 2, 2, 0]

操作 2:

[2,4] +3

数组变为:

[0, 2, 5, 5, 3]

操作 3:

[0,2] -2

最终数组:

[-2, 0, 3, 5, 3]

提示:
如果每次都逐个修改区间中的元素,
在 n 很大时可能会超时。
是否可以只记录“变化发生的位置”?