5316 - 双窗口排队

题目描述

超市有 2 个结账窗口(A 和 B),每个窗口的队列容量为 3。顾客按以下规则选择窗口: 优先选择当前人数较少的窗口;若人数相同,选 A 窗口。 若目标窗口满(3 人),则尝试另一个窗口;若两窗口都满,输出 "Both full"。 支持以下操作:

  • A n:顾客 n(1≤n≤500)前来排队(按规则选择窗口)。
  • B:A 窗口处理队首顾客(出队)。若 A 窗口空,输出 "Window A empty";否则输出 "A serves n"。
  • D:B 窗口处理队首顾客(出队)。若 B 窗口空,输出 "Window B empty";否则输出 "B serves n"。
  • P:打印两窗口排队情况(格式:"A: [a1 a2 a3]; B: [b1 b2 b3]",空位置用_表示)。 输入以Q结束,输出所有操作结果。
输入

每行一个操作:

  • A n(新顾客)
  • B(A 窗口处理)
  • D(B 窗口处理)
  • P(打印)
  • Q(结束)
输出
  • A n成功:n goes to A或n goes to B;失败:Both full
  • B成功:A serves n;失败:Window A empty
  • D成功:B serves n;失败:Window B empty
  • P:按格式输出两窗口情况(例如:"A: [1 2 _]; B: [3 _ _]")
样例

输入

A 1  
A 2  
A 3  
A 4  
P  
B  
A 5  
P  
D  
D  
A 6  
P  
Q  

输出

1 goes to A  
2 goes to B  
3 goes to A  
4 goes to B  
A: [1 3 _]; B: [2 4 _]  
A serves 1  
5 goes to A  
A: [3 5 _]; B: [2 4 _]  
B serves 2  
Window B empty  
6 goes to B  
A: [3 5 _]; B: [6 _ _]  
说明

数据范围

顾客号 n:1≤n≤500

操作次数:1≤次数≤30

题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 4
通过人数 2
金币数量 0 枚
难度 未标记


上一题 下一题