CF845D Driving Test

题目描述

Polycarp刚尝试通过驾驶考试。他跑过直道,有四种类型的标识牌。 1、**速度限制**:此符号带有一个正整数,表示汽车的最大速度(取消此类型上一个符号的动作); 2、**允许超车**:这个标志意味着一些车遇到它后,它可以超过任何其他车(这句话对着样例意会一下); 3、**无速度限制**:此标志取消限速(如果有的话)(汽车可以在此标志后以任意速度移动 ; 4、**取消超车允许**:一些车在这个标志后不能超过任何其他车。 Polycarp通过了这些标志,每个新标志都取消了之前所有标志(速度限制/超车)的动作。 有可能两个或多个“没有超车允许”的标志一个接一个地出现,它们之间没有“超车允许”标志。这个说明适用于“无速度限制”和“超车允许”标志。 在乘坐开始时允许超车并且没有速度限制。 现在按时间顺序给出了一系列事件 - 在乘坐过程中发生在Polycarp的事件。有以下类型的事件: Polycarp将他的汽车速度改为指定(用一个正整数表示) ; Polycarp的车超越了另一辆车; Polycarp的汽车经过了“限速”标志(此标志带有正整数); Polycarp的汽车经过“超车允许”标志; Polycarp的汽车经过了“无限速”; Polycarp的赛车经过了“不允许超车”; 保证按时间顺序的第一个事件是类型1的事件(Polycarp将他的汽车的速度改为指定的)。 在考试结束后,Polycarp可以通过告诉驾驶教练他没有注意到某些迹象来证明他的违规行为是正当的。 Polycarp现在要证明他的违规行为是正当的,那么他最少要说的自己没有注意到的标识数量是多少?

输入格式

第一行一个整数 $n(1\le n \le 2 \times 10^5)$,表示事件数量。 接下来的 $n$ 行中的每一行以整数 $t$ 开始 $(1 \le t \le 6)$ 即事件的类型。 在第一种和第三种类型的查询中跟随着整数 $s(1 \le s \le 300)$。 保证按时间顺序的第一个事件是类型 $1$ 的事件(Polycarp 将他的汽车的速度改为指定的)。 注:如果它是第一种类型的查询,那么它是 Polycarp 汽车的新速度,如果它是第三种类型的查询,那么是新的速度限制

输出格式

输出能使他证明他的违规行为是正当的的没有注意到的标识数量的最小值。 ## **样例解释:** 在第一个例子中,Polycarp应该说他没有注意到限速为 70 的“速度限制”标志和第二个限速为 120 的“速度限制”标志。 在第二个例子中,Polycarp没有违反任何规则。 在第三个例子中,Polycarp应该说他没有注意到在“超车允许”标志之后出现的两个“禁止超车”。

说明/提示

In the first example Polycarp should say he didn't notice the "speed limit" sign with the limit of $ 70 $ and the second "speed limit" sign with the limit of $ 120 $ . In the second example Polycarp didn't make any rule violation. In the third example Polycarp should say he didn't notice both "no overtake allowed" that came after "overtake is allowed" sign.