540:Team Queue

Team Queue


本题有两个队列:每个团队有一个队列,而团队整体又形成一个队列,建两个queue即可。

#include<cstdio>
#include<map>
#include<queue>
using namespace std;
const int maxt = 1000 + 5;
int t,n;
char cmd[10];
int main(){
    int kase = 0;
    while(scanf("%d",&t) && t){
        queue<int>q1,q2[maxt];
        map<int,int>group;
        int member;
        for(int i = 0;i < t;i++){
            scanf("%d",&n);
            while(n--){
                scanf("%d",&member);
                group[member] = i;
            }
        }
        printf("Scenario #%d\n",++kase);
        while(scanf("%s",cmd) && cmd[0] != 'S'){
            if(cmd[0] = 'E'){
                scanf("%d",&membet);
                int t = group[x];
                if(q2[t].empty()) q1.push(t);
                q2[t].push(x);
            }
            else{
                int t = q1.front();
                printf("%d\n",q2[t].front());
                q2[t].pop();
                if(q2[t].empty()) q1.pop(); //看没人了才pop
            }
        }
        putchar('\n');
    }
    return 0;
}

posted @ 2018-04-16 23:58  ACLJW  阅读(135)  评论(0编辑  收藏  举报