제출 #1015875

#제출 시각아이디문제언어결과실행 시간메모리
101587512345678Zagrade (COI20_zagrade)C++17
0 / 100
255 ms344 KiB
#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 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...