#2783. 动物医院(优先队列)

动物医院(优先队列)

题目描述

森林中发生了火灾,受伤的动物们需要排队去医院治疗。为了确保最需要治疗的动物能够优先得到帮助,排队规则如下:血量越少的动物排在队伍越前面。如果两只动物的血量相同,则先到达的动物排在前面。

现在,你需要处理一系列指令,指令共有两种类型:

  1. 指令1:新增一只动物排队。输入格式为 1 name hp,其中 name 是动物的名字(由不超过10个小写字母组成),hp 是动物的血量(1~100)。
  2. 指令2:医院有空闲位置,此时需要将血量最小的动物从队列中移除,并输出该动物的名字。如果队列为空,则忽略此操作。

输入格式

第一行包含一个整数 n,表示指令的数量。 接下来的 n 行,每行包含一条指令。指令的格式如下:

  • 如果是新增动物排队,则输入 1 name hp
  • 如果是移除血量最小的动物,则输入 2

输出格式

对于每条指令2,输出血量最小的动物的名字,每个名字占一行。如果队列为空,则不输出任何内容。

样例

样例输入

5
1 lion 30
1 tiger 20
2
1 bear 10
2

样例输出

tiger
bear

数据范围与提示

  • 1n1051≤n≤10^5
  • 动物的名字由不超过10个小写字母组成。
  • 动物的血量范围为1到100。

提示

  • 你可以使用优先队列(最小堆)来高效地实现血量最小的动物的移除操作。
  • 注意处理指令1和指令2的逻辑顺序,确保队列的正确性。