This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define ll int
#define pb push_back
const int mxN = 1e6 + 5;
ll n,a[mxN];
stack<ll> st;
string s;
ll check(ll a, ll b){
assert(a < b);
ll curr = 0;
for(int i = a - 1; i < b; i++){
if(s[i] == '(') curr++;
else curr--;
if(curr < 0){
cout << 0 << endl;
return 0;
}
}
if(curr != 0){
cout << 0 << endl;
return 0;
}
cout << 1 << endl;
return 1;
}
void init(){
cin >> s;
// for(int i = 0; i < n / 2; i++) s += "()";
// random_device rd;
// mt19937_64 gen(rd());
// uniform_int_distribution<ll> dis(0, n - 1);
// for(int i = 1; i < n - 1; i++) swap(s[i], s[dis(gen)]);
// cout << s << endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
// init();
ll cnt = n / 2;
st.push(1);
for(int i = 2; i <= n; i++){
ll l = st.top();
cout << "? " << l << ' ' << i << endl;
ll ans;
cin >> ans;
// ans = check(l, i);
if(ans){
a[l] = 1;
a[i] = 2;
cnt--;
st.pop();
}
else st.push(i);
if(st.empty()) st.push(++i);
}
ll val = 2;
cout << "! ";
for(int i = 1; i <= n; i++){
if(!a[i]){
cnt--;
a[i] = val;
if(cnt == 0) val = 1;
}
if(a[i] == 1) cout << '(';
else cout << ')';
}
cout.flush();
// cout << endl << " " << s;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |