社区讨论

20pts 求助!!

P9518queue参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@lo1m7sge
此快照首次捕获于
2023/10/22 23:20
2 年前
此快照最后确认于
2023/11/03 00:04
2 年前
查看原帖
CPP
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int main() {
    int n;
    cin>>n;
    if(n==1) {
        string s;
        cin>>s;
        if(s=="start") {
            cout<<"Error"<<endl;
            return 0;
        }
        else if(s=="arrive") {
            cout<<"OK"<<endl;
        }
        else if(s=="leave") {
            cout<<"Error"<<endl;
        }
    }
    else {
        string a[2]= {"\0","\0"};
        int k=0;
        int ans=0;
        int kkk=0;
        queue<string> q;
        while(n--) {
            string s;
            cin>>s;
            if(s=="start") {
                if(kkk==1) {
                    kkk=0;
                    for(int i=0; i<2; i++) {
                        if(a[i]!="\0") q.push(a[i]);
                    }
                    goto s1;
                }
                else if(q.empty()) {
                    cout<<"Error"<<endl;
                    continue;
                }
                else if(q.size()==1) {
                    cout<<q.front()<<endl;
                    a[0]=q.front();
                    q.pop();
                    kkk++;
                }
                else if(q.size()>1) {
                s1:
                    for(int i=0; i<2; i++) {
                        cout<<q.front()<<" ";
                        a[i]=q.front();
                        q.pop();
                    }
                    if(n!=0) cout<<endl;
                    kkk++;
                }
                // cout<<"k:"<<kkk<<endl;
            }
            else if(s=="arrive") {
                string g;
                cin>>g;
                if(a[0]==g) {
                        cout<<"Error"<<endl;
                        continue;
                    }
                    if(a[1]==g) {
                        cout<<"Error"<<endl;
                        continue;
                    }
                for(int i=0; i<q.size(); i++) {
                    if(q.front()==g) {
                        cout<<"Error"<<endl;
                        break;
                    }
                    else {
                        q.push(q.front());
                        q.pop();
                    }
                }
                    q.push(g);
//                    for(int i=0;i<q.size();i++){
//                    	cout<<q.front()<<" ";
//                    	q.push(q.front());
//                    	q.pop();
//					}
                    cout<<"OK"<<endl;
                    continue;
            }
            else if(s=="leave") {
                string c;
                cin>>c;
                if(a[0]==c) {
                    cout<<"Error"<<endl;
                    continue;
                }
                else if(a[1]==c) {
                    cout<<"Error"<<endl;
                    continue;
                }
                else {
                    int aa=0;
                    for(int i=0; i<q.size(); i++) {
                        if(q.front()==c) {
                            aa++;
                            cout<<"OK"<<endl;
                            q.pop();
                        }
                        else {
                            q.push(q.front());
                            q.pop();
                        }

                    }
                    if(aa==0) {
                        cout<<"Error"<<endl;
                        continue;
                    }
                }
            }
//            if(q.size()==0) cout<<"EE"<<endl;
//            /*else*/ for(int i=0; i<q.size(); i++) {
//                cout<<q.front()<<" ";
//                q.push(q.front());
//                q.pop();
//            }
//            cout<<"a[0]"<<a[0]<<" "<<"a[1]"<<a[1]<<endl;
            //cout<<"q.size():"<<q.size()<<endl;
        }
    }
    return 0;
}

回复

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

正在加载回复...