#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
int query(int a, int b){
cout << "? " << a << ' ' << b << '\n';
cout << flush;
int x;
cin >> x;
return x;
}
set <int> ativos;
int ans[N];
int main(){
int n, q;
cin >> n >> q;
for(int i = 1;i <= n;i++){
ativos.insert(i);
}
memset(ans, -1, sizeof ans);
int cnt = n/2;
for(int i = n-1;i >= 1;i--){
int x = query(i, *ativos.upper_bound(i));
if(x == 1){
int v = *ativos.upper_bound(i);
ans[i] = 0;
ans[v] = 1;
ativos.erase(i);
ativos.erase(v);
cnt--;
}
}
string s;
for(int i = 1;i <= n;i++){
//cout << ans[i] << ' ';
if(ans[i] == -1){
if(cnt > 0){
s.push_back(')');
cnt--;
}
else{
s.push_back('(');
}
}
else if(ans[i] == 0){
s.push_back('(');
}
else{
s.push_back(')');
}
}
cout << "! " << s << '\n';
cout << flush;
}
# | 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... |