#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]=')';
}
else {
rep[i]='(';
}
}
cout<<"! ";
for (int i=1;i<=nbVal;i++) {
cout<<rep[i];
}
cout<<endl;
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |