제출 #334042

#제출 시각아이디문제언어결과실행 시간메모리
334042limabeansZagrade (COI20_zagrade)C++17
100 / 100
961 ms1400 KiB
#include <bits/stdc++.h>
using namespace std;

template<typename T>
void out(T x) { cout << x << endl; exit(0); }
#define watch(x) cout << (#x) << " is " << (x) << endl





using ll = long long;


const int maxn = 1e6 + 5;


int n, q;
char ans[maxn];


int ask(int l, int r) {
    cout<<"? ";
    cout<<l+1<<" "<<r+1<<endl;
    int x;
    cin>>x;
    return x;
}



int main() {
    ios_base::sync_with_stdio(false); cin.tie(0);  cout.tie(0);

    cin>>n>>q;


    vector<int> stk;
    for (int i=0; i<n; i++) {
	if (stk.empty()) {
	    stk.push_back(i);
	    continue;
	}
	int res = ask(stk.back(), i);
	if (res==1) {
	    ans[stk.back()]='(';
	    ans[i]=')';
	    stk.pop_back();
	} else {
	    stk.push_back(i);
	}
    }

    int len = stk.size();
    assert(len%2==0);
    for (int i=0; i<len; i++) {
	if (i<len/2) {
	    ans[stk[i]]=')';
	} else {
	    ans[stk[i]]='(';
	}
    }

    cout<<"! ";
    for (int i=0; i<n; i++) {
	cout<<ans[i];
    }
    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...