#1186. 跳水深渊

跳水深渊

跳水深渊

题目背景

小正方形亲眼看见了自己昔日的朋友被卷进了黑暗的深渊,然而它无力阻止……

现在它的朋友已经向它发起了攻击,因此小正方形不得不抵抗。

题目描述

我们把山顶上的湖泊看作一条长度为 mm 的直线,一开始水深都在水平线上,我们视作此时的水深为 00。

接下来,在一瞬间,小正方形的"朋友"们跳起并扎入水中,导致在入水点的水降低而远离入水点的水升高,注意两个 "朋友" 可能在同一地点入水。

小正方形的每个朋友有一个体积数值 vv,当体积为 vv 的一个朋友跳入水中,我们设入水点为 ii,将会导致 i−v+1i - v + 1 到 ii 的水位依次降低 1,2,⋯ ,v1,2,\cdots,v。

同样地,第 ii 到 i+v−1i + v - 1 的水位会依次降低 v,v−1,⋯ ,1v,v - 1,\cdots,1。

相对应地,i−vi - v 的水位不变, i−v−1i - v - 1 到 i−2×vi - 2 \times v 水位依次增加 1,2,⋯ ,v1,2,\cdots,v, i−2×vi - 2 \times v 到 i−3×v+1i - 3 \times v + 1 水位依次增加 v,v−1,⋯ ,1v,v - 1,\cdots,1。

同样,i+vi + v 水位不变,i+v+1i + v + 1 到 i+2×vi + 2 \times v 水位增加 1,2,⋯ ,v1,2,\cdots,v,i+2×vi + 2 \times v 到 i+3×v−1i + 3 \times v - 1 水位依次增加 v,v−1,⋯ ,1v,v - 1,\cdots,1。

现在小正方形想要穿过这个湖,他想要知道在这 nn 个"朋友"跳入水中后湖上每个节点的水位,你能帮帮它吗?

输入格式

第一行为两个整数 nn(n≤106n \le 10^6),mm(1≤m≤1061 \le m \le 10^6),表示"朋友"的数目与湖泊的宽度。

接下来 nn 行,一行两个整数 vv(1≤v≤100001 \le v \le 10000),xx(1≤x≤m≤1061 \le x \le m \le 10^6),表示第 i+1i + 1 个朋友的体积与入水点。

输出格式

一行 mm 个整数,第 ii 个整数表示 ii 号位的水深。

输入输出样例

1 15
2 7
0 1 2 1 0 -1 -2 -1 0 1 2 1 0 0 0 
2 10
2 6
3 1
-2 0 0 0 0 0 2 2 2 2

样例解释

对于第一个样例:

位置77处跳下一重量为22的人, 因此:

  • 从 x - v + 1 到 x(即位置 6 到 7),水位依次降低 1, 2。
  • 从 x 到 x + v - 1(即位置 7 到 8),水位依次降低 2, 1。
  • x - v(位置 5)和 x + v(位置 9),水位变化量均为 0。
  • 从 x - v - 1 到 x - 2 * v(即位置 4 到 3),水位依次增加 1, 2。
  • 从 x - 2 * v 到 x - 3 * v + 1(即位置 3 到 2),水位依次增加 2, 1。
  • 从 x + v + 1 到 x + 2 * v(即位置 10 到 11),水位依次增加 1, 2。
  • 从 x + 2 * v 到 x + 3 * v - 1(即位置 11 到 12),水位依次增加 2, 1。
  • 其余部分距离较远,水位不变(变化量为 0)。