Submission #1153714

#TimeUsernameProblemLanguageResultExecution timeMemory
1153714zhehanZagrade (COI20_zagrade)C++20
0 / 100
3078 ms928 KiB
#include <bits/stdc++.h>
using namespace std;

typedef pair<int,int> ii;

int main(){
    int n, q, check;
    vector<ii> paired;
    cin>>n>>q;
    int ptr=1;
    int counter=0;
    stack<int> singlepos;
    while(ptr<n+1){
        if(ptr==n){
            ptr++;
            continue;
        }
        // if(ptr>0&&ptr+1<=n){
        //     while(true){

        //     }
        // }
        cout<<"? "<<ptr<<' '<<ptr+1<<endl;
        cin>>check;
        if(check==0){
            singlepos.push(ptr);
            ++ptr;
        }else{
            int last = ptr;
            ptr+=2;
            paired.push_back(ii(last,ptr-1));
            while(check==1){
                if(singlepos.empty()) break;
                while(singlepos.top()>0&&ptr<=n){

                }
                cout<<"? "<<singlepos.top()<<' '<<ptr<<endl;
                cin>>check;
                if(check==1){
                    last=singlepos.top();
                    singlepos.pop();
                    ptr++;
                    paired.push_back(ii(last,ptr-1));
                }
            }
            
        }
    }
    sort(paired.begin(),paired.end());
    vector<char> ans(n+1,'_');
    int unknowns = n;
    for(auto x : paired){
        int s = x.first;
        int e = x.second;
        ans[s] = '(';
        ans[e] = ')';
        unknowns-=2;
    }
    unknowns/=2;
    int cnt = 0;
    for(int i=0;i<n;++i){
        if(ans[i+1]=='_'){
            cnt++;
            if(cnt<=unknowns){
                ans[i+1] = ')';
            }else{
                ans[i+1] = '(';
            }
        }
    }
    cout<<"! ";
    for(int i = 0; i < n; ++i){
        cout<<ans[i+1];
    }
    return 0;
}   
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...