Submission #1152595

#TimeUsernameProblemLanguageResultExecution timeMemory
1152595itslqZagrade (COI20_zagrade)C++20
0 / 100
232 ms1440 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 (i + j + 1 <= N && i - j > 0 && query(i - j, i + j + 1)) {
            ans[i - j] = 1;
            ans[i + j + 1] = -1;
            j++;
        }
    }
    
    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...