#12764. 雨季地貌重建

雨季地貌重建

雨季地貌重建

题目背景

在一条长度为 n 的土地上,最初每一块地面的高度都为 0

进入雨季后,这片土地经历了大量不规则的降雨过程。雨水可能堆积泥沙抬高地面,也可能冲刷土地降低高度。

为了研究地貌变化,科研人员记录了每一次降雨事件。

你的任务是在所有降雨结束后,计算每一块土地的最终高度。


题目描述

每一次降雨事件由三个整数 l, r, v 描述:

从第 l 块土地到第 r 块土地(包含两端), 这一整段区域的高度都会 ​整体增加 v 个单位​。

如果 v 为负数,则表示该区域被雨水冲刷,高度整体降低。

所有降雨事件 ​按照时间顺序依次发生​,不同事件可能作用在同一片土地上并产生叠加效果。

请计算所有降雨结束后,每一块土地的最终高度。


输入格式

第一行输入两个整数:

n m
  • n 表示土地的长度
  • m 表示降雨事件数量

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

l r v

表示一次降雨事件。


输出格式

输出一行 n 个整数:

h1 h2 ... hn

其中 hi 表示第 i 块土地在雨季结束后的最终高度。

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


数据范围

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

所有中间计算结果可能超过 32 位整数范围,请使用 long long


样例输入

6 3
2 5 3
1 3 2
4 6 1

样例输出

2 5 5 4 4 1

样例说明

初始状态:

0 0 0 0 0 0

第一次降雨 (2,5,3)

0 3 3 3 3 0

第二次降雨 (1,3,2)

2 5 5 3 3 0

第三次降雨 (4,6,1)

2 5 5 4 4 1

最终得到:

2 5 5 4 4 1

提示

降雨会影响一个连续区间,如果逐个修改每一块土地,时间复杂度可能达到 O(n × m),在本题数据范围下会超时。

可以思考:

一场雨从哪里开始
一场雨在哪里结束

也许世界真正变化的地方,并不是每一块土地,而只是 ​雨开始的地方和雨结束的地方​。