社区讨论

30pts AC on #1#2#6 求调

P9518queue参与者 1已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mhj3tgtk
此快照首次捕获于
2025/11/03 20:16
4 个月前
此快照最后确认于
2025/11/03 20:16
4 个月前
查看原帖
被大%你打爆了
CPP
#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 5;

int T;
string a, b;
queue <string> q;
unordered_map <string, int> mp;

int main(){
    cin >> T;
    while (T -- ){
        string op;
        cin >> op;
        
        if (op == "start"){
            while (q.size() && mp[q.front()] == 0) q.pop();
            if (q.size() == 0) cout << "Error\n";
            if (q.size()){
                if (a != "") q.push(a), mp[a] = 1;
                if (b != "") q.push(b), mp[b] = 1;
                a = b = "";
                
                a = q.front();
                q.pop();
                while (q.size() && mp[q.front()] == 0) q.pop();
                if (q.size()){
                    b = q.front();
                    q.pop();
                }

                mp[a] = mp[b] = 2;
                if (a != "") cout << a << " ";
                if (b != "") cout << b << " ";
                cout << "\n";
            }
        }
        else if (op == "arrive"){
            string nam; cin >> nam;
            if (mp[nam] == 0){
                q.push(nam);
                mp[nam] = 1;
                cout << "OK\n";
            }
            else cout << "Error\n";
        }
        else if (op == "leave"){
            string nam; cin >> nam;
            if (mp[nam] == 1){
                mp[nam] = 0;
                cout << "OK\n";
            }
            else cout << "Error\n";
        }
    }
}

回复

4 条回复,欢迎继续交流。

正在加载回复...