塔子哥是个资深二次元宅宅,这天他去购买二次元限定手办。
塔子哥来到贩卖现场,发现已经排好了长长的队伍,并且总共有n个手办正在贩卖。大家都需要排队购买,只有在队列最前面的人可以选择购买或者不购买,所有人随时都可以离开队列,离开队列后也可以随时加入队列。塔子哥时不时会看一眼队列中有多少人,记录了总共q次事件的发生,并且均为以下4种事件:
可以使用队列模拟所有事件来解决此题。但是队列是先进先出的特性,无法让队列中一个元素离开,所以需要额外的信息来记录队列中当前某一个元素是否有效。本题可以通过记录每次入队时的时间(或者说此次事件的编号),来判断当前一个元素是否有效,每次购买时,检查当前队头元素所记录的时间是否和最后一次入队时间相同,不相同则为无效。如果无效,则直接出队即可。
队列中的人数同样也能用一个额外的变量来记录,入队事件则人数加一,离队事件则人数减一。