#12085. 多窗口排队系统
多窗口排队系统
📌 Day 1 - Problem 2:【模拟】多窗口排队系统
🧭 题目描述
一个超市有 K 个结账窗口,顾客依次排队等待结账。系统依次处理如下操作:
arrive x
:编号为x
的顾客到达,加入到人数最少的窗口队伍中(若有多个相同,选择编号最小的窗口);serve k
:窗口k
服务一位顾客(即移除该窗口队列最前面的顾客);check k
:查看窗口k
当前队伍,依次输出队伍中的所有顾客编号(空队列输出empty
)。
请你模拟整个系统过程。
📥 输入格式
第一行两个整数:Q K(操作数、窗口数量)
接下来 Q 行,每行一个操作:
- arrive x
- serve k
- check k
- 1 ≤ Q ≤ 1000
- 1 ≤ K ≤ 10
- 1 ≤ x ≤ 10000
📤 输出格式
- 每次
check
操作,输出一行:- 若窗口为空输出:
empty
- 否则输出该窗口队伍中顾客编号(从队首到队尾),中间用空格分隔
- 若窗口为空输出:
🎯 样例输入
8 2
arrive 101
arrive 102
arrive 103
check 1
check 2
serve 1
check 1
check 2
✅ 样例输出
101 103
102
103
102
💡 样例说明
- arrive 101 → 加入窗口 1
- arrive 102 → 加入窗口 2(窗口 1 已有 1 人)
- arrive 103 → 两个窗口各 1 人 → 加入编号小的窗口 1
- serve 1 → 移除 101,窗口 1 变为 103
🧪 训练目标
- 熟悉多个队列的模拟;
- 理解“按人数最少 + 编号最小”决策;
- 掌握 queue 容器和 vector 多队列的组合使用。