AT_abc294_d [ABC294D] Bank
题目描述
银行里有编号为 1,2,…,N 的人排队。
接下来会发生 Q 个事件。每个事件属于以下三种之一:
1:在尚未被叫号的人中,编号最小的人被叫到前台。
2\ x:编号为 x 的人第一次前往前台。(此时,x 已经被叫号至少一次。)
3:在已经被叫号但还未前往前台的人中,编号最小的人再次被叫到前台。
请按被叫到前台的顺序,输出每次第 3 种事件中被叫到前台的人的编号。
输入格式
输入以如下格式从标准输入读入。这里 eventi 表示第 i 个事件。
N Q
event1
event2
⋮
eventQ
每个事件的输入格式如下三种之一:
1
2\ x
3
输出格式
设输入中第 3 种事件的总数为 X,请输出 X 行。
第 i 行输出第 i 次第 3 种事件中被叫到前台的人的编号。
输入输出样例 #1
输入 #1
4 10
1
1
3
2 1
1
2 3
3
1
2 2
3
输出 #1
1
2
4
说明/提示
限制条件
- 1≤N≤5×105
- 2≤Q≤5×105
- 当所有人都已被叫号时,不会发生第 1 种事件
- 对于第 2 种事件,编号为 x 的人已经被叫号至少一次
- 对于第 2 种事件,编号为 x 的人不会前往前台超过一次
- 当所有被叫号的人都已前往前台时,不会发生第 3 种事件
- 第 3 种事件至少会发生一次
- 输入的所有值均为整数
样例解释 1
对于 i=1,2,…,Q,在第 i 个事件发生前,已经被叫号但还未前往前台的人的集合如下:
- i=1:{ }
- i=2:{ 1}
- i=3:{ 1,2}
- i=4:{ 1,2}
- i=5:{ 2}
- i=6:{ 2,3}
- i=7:{ 2}
- i=8:{ 2}
- i=9:{ 2,4}
- i=10:{ 4}
第 3 种事件在 i=3,7,10 时发生,因此此时集合中编号最小的人分别为 1,2,4,应依次输出。
由 ChatGPT 4.1 翻译