#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 多队列的组合使用。