#2783. 动物医院(优先队列)
动物医院(优先队列)
题目描述
森林中发生了火灾,受伤的动物们需要排队去医院治疗。为了确保最需要治疗的动物能够优先得到帮助,排队规则如下:血量越少的动物排在队伍越前面。如果两只动物的血量相同,则先到达的动物排在前面。
现在,你需要处理一系列指令,指令共有两种类型:
- 指令1:新增一只动物排队。输入格式为
1 name hp
,其中name
是动物的名字(由不超过10个小写字母组成),hp
是动物的血量(1~100)。 - 指令2:医院有空闲位置,此时需要将血量最小的动物从队列中移除,并输出该动物的名字。如果队列为空,则忽略此操作。
输入格式
第一行包含一个整数 n
,表示指令的数量。
接下来的 n
行,每行包含一条指令。指令的格式如下:
- 如果是新增动物排队,则输入
1 name hp
。 - 如果是移除血量最小的动物,则输入
2
。
输出格式
对于每条指令2,输出血量最小的动物的名字,每个名字占一行。如果队列为空,则不输出任何内容。
样例
样例输入
5
1 lion 30
1 tiger 20
2
1 bear 10
2
样例输出
tiger
bear
数据范围与提示
- 动物的名字由不超过10个小写字母组成。
- 动物的血量范围为1到100。
提示
- 你可以使用优先队列(最小堆)来高效地实现血量最小的动物的移除操作。
- 注意处理指令1和指令2的逻辑顺序,确保队列的正确性。