This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int nx=1e5+5;
int n, res[nx], x, q;
int query(int l, int r)
{
cout<<"? "<<l<<' '<<r<<'\n';
fflush(stdout);
cin>>x;
return x;
}
void fillres(int l, int r)
{
//cout<<"Debug "<<l<<' '<<r<<'\n';
int md=(l+r)/2;
for (int i=l; i<=md; i++) res[i]=1;
}
void solve2(int l, int r)
{
if (r<l) return;
if (l+1==r) return res[l]=1, void();
int lst=l;
for (int i=l+1; i<r; i+=2) if (query(l, i)) fillres(lst, i), lst=i+1;
fillres(lst, r);
}
void solve1(int l, int r)
{
if (r==l+1) return res[l]=1, void();
for (int i=l+1; i<r; i+=2) if (query(l, i)) return res[l]=1, solve2(l+1, i-1), solve1(i+1, r), void();
res[l]=1;
solve2(l+1, r-1);
}
int main()
{
cin>>n>>q;
solve1(1, n);
cout<<"! ";
for (int i=1; i<=n;i ++) cout<<(res[i]?'(':')');
}
# | 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... |