双向队列
来源:互联网 发布:nginx stream 模块 编辑:程序博客网 时间:2024/05/01 14:19
1、双向队列
描述
新建的 Beijing Institute Group 银行 (BIG-Bank) 在北理工开了一个营业点,他们装备了由 IBM Coral Studio 提供的现代化计算环境,使用现代的信息技术。通常,每个银行客户都有唯一的用来标识身份的正整数 K ,而每当他来到银行寻求服务时,银行都会给他一个正整数 P ,代表他的优先权。银行一个年轻的管理员李凌对软件服务系统的功能十分惊讶。他建议打破银行传统的最低优先权优先的服务方式,加入最高优先权优先的服务。于是,软件系统将得到如下类型的请求:
0 系统终止服务
1 K P 将客户 K 加到等待队列中,并赋优先权 P
2 为有最高优先权的人服务,并将他从等待队列中删除
3 为有最低优先权的人服务,并将他从等待队列中删除
银行的软件工程师张国文现在抽不开身,请你替他写一个程序实现这种服务策略。
输入
输入的每行包含一个可能的请求,只有最后一行是停止请求 ( 代码 0) 。你可以认为每个加入客户的请求 ( 代码 1) 中,赋予的优先权都是不同的。每个标识 K 都是小于 106 的数,优先权 P 都是小于 107 的数,客户可能请求多次服务,每次都会得到不同的优先权。
输出
对每个代码为 2 或 3 的请求,程序必须打印被服务的客户的标识。如果此时队列是空,那么打印 0 。
样例输入
2
1 20 14
1 30 3
2
1 10 99
3
2
2
0
样例输出
0
20
30
10
0
#include <iostream>#include <set>#include <stdio.h>#include <string.h>#include <deque>using namespace std;struct FFF{int k;int p;} ;deque <FFF> d;void see(){if(d.empty()) printf("空\n");deque<FFF>::iterator it; for(it=d.begin();it!=d.end();it++) { FFF f = *it; printf(" 人 %d 号 %d\n",f.k,f.p); }}void add(){FFF ff;int kk,pp;scanf("%d%d",&kk,&pp);ff.k = kk;ff.p = pp;if(d.empty()) { d.push_back(ff); }else{FFF beg = *d.begin();if(beg.p>ff.p){//printf("入头 %d %d\n",beg.p,ff.p);d.push_front(ff);return;}beg = d.back();if(beg.p<ff.p){//printf("入头 %d %d\n",beg.p,ff.p);d.push_back(ff);return;} deque<FFF>:: iterator it; for(it=d.begin();it!=d.end();it++) { FFF t = *it; //printf("!%d %d\n",ff.p,t.p); if(ff.p<t.p) { //printf("213\n"); d.insert(it,1,ff); return;}}} }void max(){if(d.empty()){printf("0\n");return;}printf("%d\n",d.back());d.pop_back();}void min(){if(d.empty()){printf("0\n");return;}printf("%d\n",d.front());d.pop_front();}int main(){d.clear();int c;while(scanf("%d",&c),c){switch(c){case 0: ;case 1: add();//see(); break;case 2:max();//see();break;case 3: min();//see();break;}}printf("0\n");return 0 ;}
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- leetcode 217. Contains Duplicat hash解法及相关hashmap与hashset问题
- Elasticsearch学习
- Android中Intent连接不同组件的原理
- 坦克大战----Ubuntu终端游戏
- kobo glo刷安卓
- 双向队列
- hadoop2.7 namenode无法启动
- 可变参数函数
- Android Xfermode 实战 实现圆形、圆角图片(1)
- Html页面跳转
- Http缓存机制
- spark 解决办法 check your cluster UI to ensure that workers are registered and have sufficient memory
- A note on Cmake - 1 Command-Line Tools
- Java对象序列化