Submission #1152613

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

string S = ")(";


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

    /*int cnt = 0;
    for (int i = l; i <= r; i++) {
        if (S[i - 1] == '(') cnt++;
        if (S[i - 1] == ')') {
            if (--cnt < 0) return false;
        }
    }
    return cnt == 0;*/
}


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 >= 1 && query(i - j, i + j + 1)) {
            ans[i - j] = 1;
            ans[i + j + 1] = -1;
            j++;
        }
    }
    
    int E = 0;
    vector<int> empty;
    for (int i = 1; i <= N; i++) {
        if (!ans[i]){
            empty.push_back(i);
            E++;
        }
    }
    
    for (int i = 0; i < E; i++) {
        ans[empty[i]] = (i < E / 2 ? -1 : 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...