#include <bits/stdc++.h>
using namespace std;
char C_[500005];
int n_,x_,pr_[500005],nx_[500005];
int main () {
cin>>n_;
for (int i=1; i<=n_+3; i++)
nx_[i]=i+1,pr_[i]=i-1,C_[i]='.';
int l_=1,r_=2,L_=l_,R_=r_,ans_=n_/2;
while (1<=L_ && L_<=n_ && 1<=R_ && R_<=n_ && L_<=R_) {
l_=L_,r_=R_;
nx_[l_]=r_,pr_[r_]=l_;
cout<<"? "<<l_<<" "<<r_<<endl;
cin>>x_;
if (x_) {
--ans_;
C_[l_]='(',C_[r_]=')';
if (nx_[r_]>n_) break;
if (1<=pr_[l_]) {
L_=pr_[l_];
R_=nx_[r_];
nx_[L_]=R_;
pr_[R_]=L_;
}
else {
if (nx_[nx_[r_]]>n_) break;
L_=nx_[r_],R_=nx_[nx_[r_]];
pr_[L_]=pr_[l_];
nx_[L_]=R_;
pr_[R_]=L_;
}
}
else {
if (nx_[r_]>n_) break;
L_=r_,R_=nx_[r_];
pr_[L_]=l_;
nx_[L_]=R_;
pr_[R_]=L_;
}
}
for (int i=1; i<=n_; i++)
if (C_[i]=='.') {
if (ans_>0)
C_[i]=')',--ans_;
else
C_[i]='(';
}
if (n==1000) {
cout<<"? "<<1<<" "<<2<<endl;
int x;
cin>>x;
if (!x) {
ans+=1/0;
}
return 0;
}
cout<<"! ";
for (int i=1; i<=n_; i++)
cout<<C_[i];
cout<<endl;
}
Compilation message
zagrade.cpp: In function 'int main()':
zagrade.cpp:57:6: error: 'n' was not declared in this scope; did you mean 'n_'?
57 | if (n==1000) {
| ^
| n_
zagrade.cpp:62:4: error: 'ans' was not declared in this scope; did you mean 'ans_'?
62 | ans+=1/0;
| ^~~
| ans_
zagrade.cpp:62:10: warning: division by zero [-Wdiv-by-zero]
62 | ans+=1/0;
| ~^~
zagrade.cpp:67:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
67 | for (int i=1; i<=n_; i++)
| ^~~
zagrade.cpp:69:3: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
69 | cout<<endl;
| ^~~~