Submission #1152586

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


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


int main() {
    int N, Q, j;
    cin >> N >> Q;

    vector<int> ans(N + 5, 0);
    for (int i = 1; i < N; i++) {
        if (ans[i]) continue;
        j = 0;
        while (query(i - j, i + j + 1)) {
            ans[i - j] = 1;
            ans[i + j + 1] = -1;
            j++;
        }
    }

    j = 1;
    while (j <= N && !ans[j]) ans[j++] = -1;

    j = N;
    while (j > 0 && !ans[j]) ans[j--] = 1;
    
    int S = 0;
    vector<int> empty;
    for (int i = 1; i <= N; i++) {
        S += ans[i];
        if (!ans[i]) empty.push_back(i);
    }
    
    int it = 0;
    for (; it < (S + empty.size()) / 2; it++) {
        ans[empty[it]] = -1;
    }
    for (; it < empty.size(); it++) {
        ans[empty[it]] = 1;
    }

    cout << "! ";
    for (int i = 1; i <= N; i++) {
        if (ans[i] == 1) cout << "(";
        else cout << ")";
    }
    cout << endl;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...