代码积存1

#include <bits/stdc++.h>
using namespace std;
int t, ts, m, mt[1000001]; 
string c;
vector<int> q;
int main() {
    cin>> t; 
    vector<vector<int>> a(t);
    for (int i = 0; i <t; i++) {
        cin >> ts; 
        for (int j=0;j<ts;j++) {
            cin >> m; 
            a[i].push_back(m);
            mt[m] = i; 
        }
    }
    while (1) {
        cin>> c;
        if (c=="ENQUEUE") {
            cin>> m; 
            if (mt[m] != -1) {
                bool ok = false;
                for (int i=q.size() - 1; i >= 0; i--) {
                    if (mt[q[i]]==mt[m]) { 
                        q.insert(q.begin()+i+1, m);
                        ok = true;
                        break;
                    }
                }
                if (!ok) q.push_back(m); 
            } else q.push_back(m);
        } else if (c=="DEQUEUE") {
            if (!q.empty()) {
                cout<<q.front()<<endl; 
                q.erase(q.begin()); 
            }
        } else if (c=="STOP") return 0; 
    }
    return 0;
}

题目描述:
题目描述
有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友身后。如果没有任何一个队友排队,则他会排到长队的队尾。输入每个团队中所有队员的编号,要求支持如下3种指令(前两种指令可以穿插进行)。
ENQUEUE:编号为X的人进入长队。
DEQUEUE:长队队首出队。
STOP:停止模拟。
对于每个DEQUEUE指令,输出出队的人的编号。

输入描述
第一行输入t,表示有t个团队。1<=t<=1000
下面t行,每行的第一个数字代表这个团队人数,后面是这几个人的编号。编号为0到999999之间的一个整数。每个队伍的人数不会超过1000个。
接着每行输入一个指令,当出现"STOP"的时候结束指令。

输出描述
对于每一个"DEQUEUE"指令,输出一个出队的人的编号。

样例
输入
2
3 101 102 103
3 201 202 203
ENQUEUE 101
ENQUEUE 201
ENQUEUE 102
ENQUEUE 202
ENQUEUE 103
ENQUEUE 203
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
STOP
输出

101
102
103
201
202
203

posted @   Sweet_2013  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示