#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)
{
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;
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)
{
res[l]=1;
for (int i=l+1; i<r; i+=2) if (query(l, i)) return solve2(l+1, i-1), solve1(i+1, r), void();
solve2(l+1, r-1);
}
int main()
{
cin>>n>>q;
solve1(1, n);
cout<<"! ";
for (int i=1; i<=n;i ++) cout<<(res[i]?'(':')');
}
/*
12
()(()())(())
*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
2 ms |
344 KB |
Output is correct |
3 |
Incorrect |
5 ms |
504 KB |
Mismatch at position 9. Expected ), found ( |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
344 KB |
Mismatch at position 1. Expected ), found ( |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
512 KB |
Output is correct |
2 |
Correct |
266 ms |
1108 KB |
Output is correct |
3 |
Incorrect |
577 ms |
592 KB |
Mismatch at position 15. Expected ), found ( |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
344 KB |
Mismatch at position 1. Expected ), found ( |
2 |
Halted |
0 ms |
0 KB |
- |