一个乒乓球俱乐部有N张桌子可供公众使用。这些表从1到n被编号为任意一对,如果有一些球台在它们到达时是空的,它们将被分配到可用的最小编号的球台上。如果所有的表都被占用,它们将不得不在队列中等待。假设每一对球员最多能踢2个小时。
你的任务是计算排队等待时间的每个人,以及每一张桌子上的玩家的数量。
让这个过程有点复杂的一点是,俱乐部为他们的VIP成员保留了一些桌子。当VIP桌字空闲时,排在队伍中的第一对贵宾将会有特权。然而,如果队伍中没有贵宾,那么普通队员就可以接受。另一方面,如果有VIP但是没有VIP桌子,那么VIP就作为普通队员看待。
输入
对于每一种情况,第一行包含一个整数N(小于=10000)-玩家总数的总数。然后N行,每一个都包含2次和VIP标签:HH:MM:到达时间,P-在几分钟的时间里玩的时间,和标签-如果他们有VIP卡,如果没有的话,是1。俱乐部开放时间是在08:00:00至21:00:00之间。假设没有两个客户同时到达。根据玩家的信息,有两个正整数:K(小于=100)-球桌的数量,M(小于K)-贵宾球桌的数量。最后一行包含M个贵宾球桌号。
1 | 9 |
输出
对于每个测试用例,首先打印到达时间、服务时间和等待时间,并以样例显示的格式为每一对参与者等待时间。然后在一行中打印出每个表所提供的播放器的数量。请注意,输出必须按照服务时间的时间顺序列出。等待时间必须被四舍五入到整数分钟(s)。如果在截止时间前不能得到一张表,他们的信息就不能被打印出来。
1 | 08:00:00 08:00:00 0 |
这个题目虽然没有什么算法上的技巧,但是对于一个事务的抽象能力的培养是十分重要的。
代码
1 |
|