#P0599. 排队结账

排队结账

题目描述

今天是周末,超市里人来人往。你作为收银员,需要根据顾客的到达和结账情况,管理好结账队伍。超市只有一个收银台,顾客们需要排队等待结账。

“下一位!” 你喊了一声,示意队伍最前面的顾客上前结账。有时候队伍空了,没有顾客等待,这时你只能继续等待。

请根据超市的客流变化,模拟收银台排队结账的过程。

输入格式

第一行一个整数 nn,表示总操作次数。

接下来 nn 行,每行一个操作,格式为以下五种之一:

  1. push x:一位编号为 xx 的顾客加入队伍末尾
  2. pop:当前顾客结账完毕,队伍最前面的顾客开始结账
  3. front:你想知道队伍最前面是哪个顾客
  4. isEmpty:你想知道队伍是否为空
  5. size:你想知道队伍现在有多少人

输出格式

对于每个操作,按以下规则输出:

  • push x:无需输出。
  • pop:如果队伍不为空,最前面的顾客结账离开;如果队伍为空,输出 Empty
  • front:如果队伍不为空,输出队伍最前面顾客的编号;如果队伍为空,输出 Empty
  • isEmpty:如果队伍为空,输出 Yes,否则输出 No
  • size:输出当前队伍人数。

每个输出占一行。

样例

9
push 101
push 102
front
pop
size
push 103
pop
pop
isEmpty
101
1
Yes

样例1解释

pushpush 101101 → 顾客 101101 排队

push 102push\ 102 → 顾客 102102 排队

frontfront → 查看队首,输出 101101

poppop → 顾客 101101 结账

sizesize → 队伍人数,输出 11

push 103push\ 103 → 顾客 103103 排队

poppop → 顾客 102102 结账

poppop → 顾客 103103 结账

isEmptyisEmpty → 队列为空,输出 Yes

数据范围

对于 100%100\% 的数据,1n1051\le n\le 10^51x1041\le x\le 10^4