제출 #1284549

#제출 시각아이디문제언어결과실행 시간메모리
1284549oscar1fZagrade (COI20_zagrade)C++20
100 / 100
258 ms5220 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long 

const int MAX_VAL=100*1000+5;
int nbVal,nbReq;
char rep[MAX_VAL];
set<int> enCours;

set<int>::iterator suiv(set<int>::iterator it) {
    it++;
    return it;
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin>>nbVal>>nbReq;
    for (int i=1;i<=nbVal;i++) {
        enCours.insert(i);
    }
    auto it=enCours.begin();
    while (it!=enCours.end() && suiv(it)!=enCours.end()) {
        cout<<"? "<<*it<<" "<<*(suiv(it))<<endl;
        int ans;
        cin>>ans;
        if (ans==0) {
            it++;
        }
        else if (it==enCours.begin()) {
            rep[*it]='(';
            rep[*(suiv(it))]=')';
            it=enCours.erase(it);
            it=enCours.erase(it);
        }
        else {
            rep[*it]='(';
            rep[*(suiv(it))]=')';
            it=enCours.erase(it);
            it=enCours.erase(it);
            it--;
        }
    }
    int reste=enCours.size()/2;
    for (int i:enCours) {
        if (reste>0) {
            rep[i]=')';
            reste--;
        }
        else {
            rep[i]='(';
        }
    }
    cout<<"! ";
    for (int i=1;i<=nbVal;i++) {
        cout<<rep[i];
    }
    cout<<endl;
    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...