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

UVa540 Team Queue

2014-03-25 09:16 281 查看
// 题意:有t个团队的人在排队。每次来了一个新人之后,如果他有队友在排队,那么这个新人会插队到队友的身后。
// 要求支持三种指令:ENQUEUE x; DEQUEUE(队首出队); STOP。模拟这个过程,输出出队顺序

#include<cstdio>
#include<cstring>
#include<iostream>
#include<string>
#include<algorithm>
#include<queue>
#include<map>
using namespace std;

const int maxt = 1000 + 10;

int main()
{
int t;
int count=0;
while(cin>>t && t)
{
count++;
cout<<"Scenario #"<<count<<endl;

map<int, int> team;
for(int i=0;i<t;i++)
{
int tsize;
cin>>tsize;
for(int j=0;j<tsize;j++)
{
int element;
cin>>element;
team[element]=i;
}
}

queue<int> q,  q2[maxt];
string cmd;
while(cin>>cmd && cmd!="STOP")
{
if(cmd=="ENQUEUE")
{
int element;
cin>>element;
int t=team[element];
if(q2[t].empty())
q.push(t);

q2[t].push(element);
}
else//DEQUEUE
{
int t=q.front();
cout<<q2[t].front()<<endl; q2[t].pop();
if(q2[t].empty())
q.pop();
}
}
cout<<endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: