本题涉及一个特异性的双端队列(deque),该队列支持以下操作:
添加操作:
head add x
:从队列头部添加元素 x
。tail add x
:从队列尾部添加元素 x
。移出操作:
remove
:从队列头部移出一个元素。有一个特异性的双端队列,该队列可以从头部或尾部添加数据,但是只能从头部移出数据。
小A依次执行2n个指令往队列中添加数据和移出数据。其中n个指令是添加数据(可能从头部添加、也可能从尾部添加),依次添加1到n;n个指令是移出数据。
现在要求移除数据的顺序为1到n。
为了满足最后输出的要求,小A可以在任何时候调整队列中数据的顺序。
请问 小A 最少需要调整几次才能够满足移除数据的顺序正好是1到n;
第一行一个数据n,表示数据的范围。
接下来的2n行,其中有n行为添加数据,指令为:
另外 n 行为移出数据指令,指令为:"remove" 的形式,表示移出1个数据;
1≤n≤3×105。
所有的数据均合法。
一个整数,表示 小A 要调整的最小次数。
输入
5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove
输出
1
说明
第1步:[1]
第2步:[1,2]
第3步:头部删除1,无需调整,还剩[2]
第4步:[3,2]
第5步:[3,2,4]
第6步:[5,3,2,4]
第7步:调整顺序为[2,3,4,5],再删除头部2,还剩[3,4,5]
第8步:头部删除3,无需调整,还剩[4,5]
第9步:头部删除4,无需调整,还剩[5]
第10步:头部删除5,无需调整
只需要调整1次