답안 #780462

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
780462 2023-07-12T09:12:06 Z makanhulia Zagrade (COI20_zagrade) C++17
0 / 100
1 ms 208 KB
#include <bits/stdc++.h>
using namespace std;

# define int long long
# define fir first
# define sec second
# define pb push_back

const int cnst = 2e5+5;
bool mutipletestcase = 0;
bool debug = 1;

string checker;

int find(int x, int y) {
    int temp = 0;
    for(int i = x-1; i<y; i++) {
        if(checker[i] == '(') temp++;
        else temp--;

        if(temp < 0) return 0;
    }
    
    return temp == 0;
}

int ask(int l, int r) {
    cout << "? " << l << " " << r << endl;
    int a;
    if(!debug) cin >> a;
    else a = find(l, r);
    return a;
}

void solve() {
    int n, q; cin >> n >> q;
    char ans[n+5]; // )) (( )(

        for(int i = 1; i<=n; i++) ans[i] = '*';

    if(debug) cin >> checker;

    stack<int> st;
    st.push(1); st.push(1);
    int fre = 0;

    for(int i = 2; i<=n; i++) {
        bool a = ask(st.top(), i);
        if(a) {
            ans[st.top()] = '(';
            ans[i] = ')';
            fre++;
        }
        else st.push(i);
    }

    int need = n/2-fre;

    cout << "! ";

    for(int i = 1; i<=n; i++) {
        if(ans[i] == '*') {
            if(need) {
                need--; cout << ')';
            }
            else cout << '(';
        }
        else cout << ans[i];
    }
}

signed main() {
    ios_base::sync_with_stdio(false);
    int t = 1;
    if(mutipletestcase) cin >> t; 
    while(t--) solve();
}
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 0 ms 208 KB Time limit exceeded (wall clock)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1 ms 208 KB Time limit exceeded (wall clock)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1 ms 208 KB Time limit exceeded (wall clock)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1 ms 208 KB Time limit exceeded (wall clock)
2 Halted 0 ms 0 KB -