#4684. Bank

0

Bank

Bank

题目描述

NN 个人,ID 编号为 11、22、…\dots、NN,正在银行前排队。
将会发生 QQ 个事件。可以发生以下三种事件。

11 :出纳员叫尚未被叫到的最小 ID 编号的人。 2x2 x :编号为 xx 的人在第一次来到出纳台。(在这里,编号为 xx 的人至少已经被出纳员叫过一次。) 33 :出纳员再次叫已经被叫过但尚未来过的人中 ID 编号最小的人。

在第三种事件中,打印被出纳员叫到的人的 ID 编号。

输入格式

输入按下列格式从标准输入给出,其中 eventi\text{event}_i 表示第 ii 个事件: NN QQ event1\text{event}_1 event2\text{event}_2 ⋮\vdots eventQ\text{event}_Q

每个事件的描述为以下格式之一: 1

2 xx

3

输出格式

输出 XX 行,其中 XX 是第三种事件的个数。
第 ii 行应包含在第 ii 次第三种事件中被叫到的人的 ID 编号。

4 10
1
1
3
2 1
1
2 3
3
1
2 2
3
1
2
4

提示

1≤N≤5×1051 \leq N \leq 5 \times 10^5 2≤Q≤5×1052 \leq Q \leq 5 \times 10^5 当所有人都至少已经被叫过一次时,不会出现第一种事件。 对于每个第二种事件,编号为 xx 的人至少已经被出纳员叫过一次。 对于每个第二种事件,编号为 xx 的人不会多次来到出纳台。 当所有已经被叫过的人都已来到出纳台时,不会出现第三种事件。 至少存在一次第三种事件。 输入中的所有数值均为整数。对于每个 i=1,2,…,Qi = 1, 2, \dots, Q,下表显示在第 ii 个事件之前已经被叫过但尚未来过的人的集合。

i=1i=1 : {}\lbrace \rbrace i=2i=2 : {1}\lbrace 1\rbrace i=3i=3 : {1,2}\lbrace 1,2\rbrace i=4i=4 : {1,2}\lbrace 1,2\rbrace i=5i=5 : {2}\lbrace 2\rbrace i=6i=6 : {2,3}\lbrace 2,3\rbrace i=7i=7 : {2}\lbrace 2\rbrace i=8i=8 : {2}\lbrace 2\rbrace i=9i=9 : {2,4}\lbrace 2,4\rbrace i=10i=10 : {4}\lbrace 4\rbrace

第 i=3,7,10i=3,7,10 的事件为第三种事件,因此你应当输出这些事件时集合中最小 ID 的人:1,2,41, 2, 4。

标签: AtCoder|abc294D

来源

AtCoder|abc294D