Submission #1152656

#TimeUsernameProblemLanguageResultExecution timeMemory
1152656itslqZagrade (COI20_zagrade)C++20
100 / 100
1091 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;

        int l = i, r = i + 1;
        while (r <= N && l >= 1) {
            while (l > 1 && ans[l]) l--;
            if (query(l, r)) {
                ans[l] = 1;
                ans[r] = -1;
                r++;
                l--;
            } else break;
        }
    }
    
    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...