https://vjudge.net/contest/240386#problem/F
看了题解后改的(还是WA):
#include <iostream>
#include <string>
#include <algorithm>
#include <stdio.h>
#include <map>
#include <queue>
using namespace std;
queue<int>q1;
queue<int>q[1050];
map<int,int>team;
int t,n,ei;
string s1("ENQUEUE");
string s2("DEQUEUE");
string s3("STOP");
int main()
{
int k=1;
while(~scanf("%d",&t))
{
if(t==0) break;
for(int i=0;i<t;++i){
scanf("%d",&n);
for(int j=0;j<n;++j){
scanf("%d",&ei);
team[ei]=i;
}
}
printf("Scenario #%d\n",k++);
while(1){
char s[100];
scanf("%s",s);
if(s[0]=='E')
{
int e;
scanf("%d",&e);
if(q[team[e]].empty()) q1.push(team[e]);
q[team[e]].push(e);
}
if(s[0]=='D')
{
printf("%d\n",q[q1.front()].front());
q[q1.front()].pop();
if(q[q1.front()].empty()) q1.pop();
}
if(s[0]=='S')
{
printf("\n");
break;
}
}
}
return 0;
}
又稍微改了改(还是WA)
#include <iostream>
#include <string>
#include <algorithm>
#include <stdio.h>
#include <map>
#include <queue>
using namespace std;
queue<int> q1;
queue<int> q[1050];
map<int,int> team;
int t,n,ei;
int main()
{
int k=1;
while(~scanf("%d",&t))
{
if(t==0) break;
printf("Scenario #%d\n",k++);
for(int i=0;i<t;++i){
scanf("%d",&n);
for(int j=0;j<n;++j){
scanf("%d",&ei);
team[ei]=i;
}
}
while(1){
char s[100];
scanf("%s",s);
if(s[0]=='E')
{
int e;
scanf("%d",&e);
int x=team[e];
if(q[x].empty()) q1.push(x);
q[x].push(e);
}
if(s[0]=='D')
{
int x=q1.front();
printf("%d\n",q[x].front());
q[x].pop();
if(q[x].empty()) q1.pop();
}
if(s[0]=='S')
{
break;
}
}
printf("\n");
}
return 0;
}
最后终于(AC):
#include <iostream>
#include <string>
#include <algorithm>
#include <stdio.h>
#include <map>
#include <queue>
using namespace std;
int main()
{
int t,k=1;
while(~scanf("%d",&t))
{
queue<int> q1;
queue<int> q[1050];
map<int,int> team;
int n,ei;
if(t==0) break;
printf("Scenario #%d\n",k++);
for(int i=0;i<t;++i){
scanf("%d",&n);
for(int j=0;j<n;++j){
scanf("%d",&ei);
team[ei]=i;
}
}
while(1){
char s[100];
scanf("%s",s);
if(s[0]=='E')
{
int e;
scanf("%d",&e);
int x=team[e];
if(q[x].empty()) q1.push(x);
q[x].push(e);
}
if(s[0]=='D')
{
int x=q1.front();
printf("%d\n",q[x].front());
q[x].pop();
if(q[x].empty()) q1.pop();
}
if(s[0]=='S')
{
break;
}
}
printf("\n");
}
return 0;
}