POJ 3481 Double Queue

题目链接:http://poj.org/problem?id=3481

题目大意:

给你0-3四个指令:
0 退出
1 添加优先级为P 的 K值,进入队列
2 最高优先级出队
3 最低优先级出队

思路:

利用map数据对key默认升序排列。
在这里插入图片描述
AC代码如下:

#include<map>
#include<iostream>
using namespace std;
int main()
{
	map<int, int> doubleQueue;
	map<int, int>::iterator it;
	int function, key, value;
	while(scanf("%d",&function) && function)
	{
		if(function == 1)
		{
			scanf("%d%d",&value,&key);
			doubleQueue.insert(pair<int, int>(key, value));
		}
		else if(function == 2)
		{
			if(doubleQueue.size() == 0)
				printf("0\n");
			else
			{
				it = doubleQueue.end();
				printf("%d\n",(--it)->second);
				doubleQueue.erase(it);
			}
		}
		else if(function == 3)
		{
			if(doubleQueue.size() == 0)
				printf("0\n");
			else
			{
				it = doubleQueue.begin();
				printf("%d\n",it->second);
				doubleQueue.erase(it);
			}
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Michael阿明

如果可以,请点赞留言支持我哦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值