Submission #1153708

#TimeUsernameProblemLanguageResultExecution timeMemory
1153708zhehanZagrade (COI20_zagrade)C++20
71 / 100
228 ms1252 KiB
#include <bits/stdc++.h> using namespace std; typedef pair<int,int> ii; int main(){ int n, q, check; vector<ii> paired; cin>>n>>q; int ptr=1; int counter=0; stack<int> singlepos; while(ptr<n+1){ if(ptr==n){ ptr++; continue; } cout<<"? "<<ptr<<' '<<ptr+1<<endl; cin>>check; if(check==0){ singlepos.push(ptr); ++ptr; }else{ int last = ptr; ptr+=2; paired.push_back(ii(last,ptr-1)); while(check==1){ if(singlepos.empty()) break; cout<<"? "<<singlepos.top()<<' '<<ptr<<endl; cin>>check; if(check==1){ last=singlepos.top(); singlepos.pop(); ptr++; paired.push_back(ii(last,ptr-1)); } } } } sort(paired.begin(),paired.end()); vector<char> ans(n+1,'_'); int unknowns = n; for(auto x : paired){ int s = x.first; int e = x.second; ans[s] = '('; ans[e] = ')'; unknowns-=2; } unknowns/=2; int cnt = 0; for(int i=0;i<n;++i){ if(ans[i+1]=='_'){ cnt++; if(cnt<=unknowns){ ans[i+1] = ')'; }else{ ans[i+1] = '('; } } } cout<<"! "; for(int i = 0; i < n; ++i){ cout<<ans[i+1]; } 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...