#12762. 能量波动记录器

能量波动记录器

能量波动记录器

题目背景

某实验室正在研究一种特殊的 ​能量轨道系统​。 在这条轨道上均匀分布着 n 个观测点,每个观测点会记录当前的能量值。

初始时,所有观测点的能量值均为 0

研究过程中,系统会记录若干次 ​能量波动事件​,每一次波动都会对一段连续的轨道产生影响。

你的任务是计算所有事件发生后,每个观测点最终的能量值。


题目描述

给定一条长度为 n 的轨道以及 m 次能量波动事件。

每次事件用三个整数 (l, r, v) 表示:

从第 l 个观测点到第 r 个观测点(包含两端), 这一整段轨道上的能量值 ​**都会增加 v**​。

所有事件按输入顺序执行。

当所有事件执行结束后,请输出每个观测点的最终能量值。


输入格式

第一行输入两个整数:

n m

表示观测点数量和能量波动事件数量。

接下来 m 行,每行输入三个整数:

l r v

表示一次能量波动事件。


输出格式

输出一行 n 个整数:

a1 a2 ... an

其中 ai 表示第 i 个观测点最终的能量值。

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


数据范围

1 ≤ n ≤ 200000
1 ≤ m ≤ 200000
1 ≤ l ≤ r ≤ n
-10^9 ≤ v ≤ 10^9

样例输入

6 3
2 5 3
1 3 2
4 6 1

样例输出

2 5 5 4 4 1

样例说明

初始状态:

0 0 0 0 0 0

第 1 次事件 (2,5,3)

0 3 3 3 3 0

第 2 次事件 (1,3,2)

2 5 5 3 3 0

第 3 次事件 (4,6,1)

2 5 5 4 4 1

因此最终结果为:

2 5 5 4 4 1

提示

如果直接对区间 [l,r] 逐个修改,时间复杂度可能达到 O(n × m),在本题数据范围下会超时。

可以考虑使用 差分数组 来优化区间修改,使每次操作只需要 O(1) 时间,再通过一次前缀和恢复最终数组。