bzoj#P1490. [HNOI2009]积木Block

[HNOI2009]积木Block

题目描述

丹丹是一位狂热的俄罗斯方块爱好者,但在把积分刷爆之后她终于开始感到厌倦了。于是她着手思考这样一个俄罗斯方块的简化版游戏:在初始状态地面上是空的。假设所有的积木都是长方形,且积木不能旋转或翻转。丹丹在每个时刻会选择一个位置将一块积木落下,当积木在落下的过程中碰到地面或另一块积木时,它会停留在地面上或那块积木上。落到另—块积木上意味着:上面的积木的下边界与下面的积木的上边界至少有一条线段重合(―个点不算),如图 1 所示。

在俄罗斯方块中,如果某个时刻积木之间形成了一个洞,那么看上去就很不优美。于是丹丹想知道,每落下一块积木之后,会形成几个新的洞。一个洞是指由积木的边界或地面组成的一块面积大于 00 的封闭的区域,如图 2(a) 和图 2(b) 所示。

要注意的是:当出现图 3 所示的情况时,因为积木 11 和积木 22 紧紧地挨在一起,所以当积木 33 落下的时候,不会形成新的洞。

现在丹丹告诉你她依次落下的积木的髙度 HiH_i 以及落下的位置的左右边界 LiL_iRiR_i1in1 \leq i \leq n,而她想知道毎次积木落下时会形成几个新的洞?

输入格式

从文件 input.txt 中读入数据,输入文件的第一行包含一个正整数 nn,表示落下的积木的总数。接下来有 nn 行,每行有用一个空格隔开的三个整数,分别表示 Li,RiL_i,R_iHiH_i,即积木落下的左右边界和积木的高度。

输出格式

输出文件 output.txt 包含 nn 行,每行只有一个数,第 ii 行表示第 ii 个积木落下后形成的新的洞的数目。

6
1 3 2
4 7 2
2 5 1
3 6 1
8 11 2
6 8 3
0
0
1
0
0
2

数据范围

输入数据保证 0Li<Ri105,Hi10000 \leq L_i < R_i \leq 10^5, H_i \leq 1000

30%30\% 的数据保证 n100n \leq 100

100%100\% 的数据保证 n105n \leq 10^5

样例解释

样例执行后的结果如图 4 所示,其中依次落下的积木按顺序编号为从 1 到 6 的一个整数。