您的位置:首页 > 产品设计 > UI/UE

UVa 540 Team Queue

2016-12-01 22:04 381 查看
题目:点击打开链接

思路:将每个组的排队情况都用短的队列存起来,观察可得总的队列的顺序中每一段都是一个短的队列,所以用这些短的队列构造总的队列时,只用存储顺序就可以了。

  提交两次:第一次presentation error ,原因是多组数据未用空行分隔,以后要多注意格式问题。

代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
using namespace std;
int main() {
int t=0;
while(1) {
int n;
string a;
queue<int> longque;
queue<int> shortque[1001];
map<int,int> group;
cin>>n;
if(n==0) {
break;
}
t++;
cout<<"Scenario #"<<t<<endl;
for(int i=1;i<=n;i++){
int m;
cin>>m;
int x;
for(int j=1;j<=m;j++){
cin>>x;
group[x]=i;
}
}
while(cin>>a) {
if(a=="ENQUEUE") {
int x;
cin>>x;
if(shortque[group[x]].empty()){
longque.push(group[x]);
}
shortque[group[x]].push(x);
} else if(a=="DEQUEUE") {
while(shortque[longque.front()].empty()){
longque.pop();
}
cout<<shortque[longque.front()].front()<<endl;
shortque[longque.front()].pop();
} else if(a=="STOP") {
break;
}
}
cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: