Submission #1152315

#TimeUsernameProblemLanguageResultExecution timeMemory
1152315itslqZagrade (COI20_zagrade)C++20
0 / 100
2 ms416 KiB
#include <bits/stdc++.h>
using namespace std;

vector<int> ans;

bool query(int l, int r) {
    bool v;
    cout << "? " << l << " " << r << endl;
    cin >> v;
    return v;
}

void solve(int l, int r) {
    if (l >= r) return;

    ans[l] = 0;
    ans[r] = 1;

    bool L, R;
    if (l + 1 == r) return;

    if (query(l + 1, r - 1)) {
        solve(l + 1, r - 1);
    } else {
        L = query(l, l + 1);
        R = query(r - 1, r);

        ans[l + 1] = L;
        ans[r - 1] = !R;

        if (L && R) {
            solve(l + 2, r - 2);
        } else if (L) {
            ans[l + 2] = 0;
            solve(l + 3, r - 1);
        } else if (R) {
            ans[r - 2] = 1;
            solve(l + 1, r - 3);
        } else {
            solve(l + 2, r - 2);
        }
    }
}

int main() {
    int N, Q;
    cin >> N >> Q;
    ans = vector<int>(N, -1);
    solve(0, N - 1);

    cout << "! ";
    for (int i = 0; i < N; i++) cout << (ans[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...