제출 #920716

#제출 시각아이디문제언어결과실행 시간메모리
920716zeta7532Zagrade (COI20_zagrade)C++17
100 / 100
631 ms5456 KiB
#include <bits/stdc++.h> #pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") using namespace std; using ll = long long; const ll mod = 998244353; #define fi first #define se second #define rep(i,n) for(ll i=0;i<n;i++) #define all(x) x.begin(),x.end() #define faster ios::sync_with_stdio(false);cin.tie(nullptr) int main() { ll N,Q; cin >> N >> Q; vector<char> ans(N,'-'); ll l=0; ll r=1; set<ll> s; rep(i,N) s.insert(i); while(1){ if(r>=N) break; cout << "?" << " " << l+1 << " " << r+1 << endl; ll q; cin >> q; if(q==0){ if(ans[l]=='(') ans[r]='('; l=r; r=l+1; } if(q==1){ s.erase(l); s.erase(r); ans[l]='('; ans[r]=')'; if(s.size()==0) break; if((*s.begin())>l){ l=r+1; r=l+1; }else{ auto it=s.upper_bound(l); it--; l=*it; r=r+1; } } } ll cnt=0; rep(i,N) if(ans[i]=='-') cnt++; ll now=0; rep(i,N){ if(ans[i]=='-'){ if(now<cnt/2) ans[i]=')'; if(now>=cnt/2) ans[i]='('; now++; } } cout << "!" << " "; rep(i,N) 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...