传统题 1000ms 256MiB

VIP超市

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

超市只有一个收银台,顾客按到达时间排队结账。顾客分为两种类型:

  • N:普通顾客
  • V:VIP 顾客

VIP 顾客享有优先结账权。收银台的结账规则如下:

  1. 顾客到达时,根据类型进入对应队列的队尾:
    • N → 普通队列
    • V → VIP 队列
  2. 收银台每次准备服务下一位顾客时,按以下顺序选择:
    • 若 VIP 队列非空,则服务 VIP 队首顾客;
    • 否则,若普通队列非空,则服务普通队首顾客;
    • 若两个队列均为空,则本次服务无人,记为 EMPTY
  3. 每位顾客的结账时间固定为 1 分钟,服务一旦开始便不会中断。

时间推进规则(重要)

时间从 0 分钟开始,以分钟为单位离散变化。每个整分钟时刻,事件发生的顺序为:先处理该时刻的所有到达,再完成上一次服务并选择下一位顾客

  • 时刻 0
    ① 将所有到达时间为 0 的顾客,严格按输入顺序 加入对应队列。
    ② 收银台立即按照规则选择一位顾客开始 第 1 次服务(即第 1 分钟的服务)。若此时队列全空,则第 1 次服务为 EMPTY

  • 时刻 t ≥ 1
    将所有到达时间为 t 的顾客,按输入顺序加入对应队列。
    ② 收银台上一次服务(或空闲)刚好在时刻 t 完成,立即按照规则选择下一位顾客,开始 第 t+1 次服务。若此时队列全空,则本次服务为 EMPTY(空闲状态也会占用 1 分钟)。

简单来说:每分钟都是“先到先得”,即同一时刻的到达顾客可以立即参与该时刻的服务选择。
空闲的收银台在下一分钟开始时仍会尝试选择顾客,若依然无人则继续空闲。


输入格式

第一行两个整数 nm,分别表示到达事件总数和需要输出的服务次数(分钟数)。
接下来 n 行,每行描述一个到达事件,格式为:
t type name

  • t:到达时间,0 ≤ t ≤ 10^9
  • type:顾客类型,一个字符,只可能为 'N''V'
  • name:顾客名字,由小写字母组成,长度不超过 10

约束
1 ≤ n ≤ 1000001 ≤ m ≤ 100000。所有到达事件按 t 非递减给出。


输出格式

输出共 m 行,第 i 行输出第 i 次服务(即第 i 分钟)被服务的顾客名字。
若该次服务时两个队列均为空,则输出 EMPTY


样例输入

6 8
0 N tom
0 V lily
1 N jack
2 V alice
2 N bob
5 V lucy

样例输出

lily
tom
alice
jack
bob
lucy
EMPTY
EMPTY

样例解释

时刻 到达事件(按顺序处理) 服务选择(服务开始时刻) 第几次服务
0 tom(N), lily(V) VIP队有lily → 服务lily 第1次 (0→1)
1 jack(N) 上次lily完成,VIP空,普通有tom → 服务tom 第2次 (1→2)
2 alice(V), bob(N) 上次tom完成,VIP有alice → 服务alice 第3次 (2→3)
3 上次alice完成,VIP空,普通有jack → 服务jack 第4次 (3→4)
4 上次jack完成,普通有bob → 服务bob 第5次 (4→5)
5 lucy(V) 上次bob完成,VIP有lucy → 服务lucy 第6次 (5→6)
6 上次lucy完成,队列全空 → EMPTY 第7次 (6→7)
7 上次空闲,队列仍空 → EMPTY 第8次 (7→8)

最终输出前 8 次服务,即与样例输出一致。

CodeRush Round 5(Div. 4)

未参加
状态
已结束
规则
OI
题目
5
开始于
2026-5-19 13:45
结束于
2026-5-20 1:45
持续时间
6 小时
主持人
参赛人数
19