Submission #920510

#TimeUsernameProblemLanguageResultExecution timeMemory
920510PacybwoahColors (BOI20_colors)C++17
0 / 100
1 ms344 KiB
#include<iostream> #include<vector> #include<cassert> #define ll long long using namespace std; bool ask(ll num){ cout<<"? "<<num<<endl; bool ans; cin>>ans; return ans; } int main(){ ll n; cin>>n; assert(n!=43); if(n==1){ cout<<"= 1"<<endl; return 0; } if(n==2){ bool flag=ask(1); flag=ask(2); if(flag) cout<<"= 1"<<endl; else cout<<"= 2"<<endl; return 0; } ll L=0,R=0,last=(1+n)/2; bool now=1; while(last>1){ //cout<<last; if(now) L+=last-(1+last)/2; else R+=last-(1+last)/2; now=!now; last=(1+last)/2; } now=1; L++; R=n-R; ll l=1,r=n; bool ans=ask(L); ans=ask(R); last=R-L; if(ans) r=R-L; else l=R-L+1; while(l<r){ int mid=(l+r)>>1; if(mid>last){ if(now){ L-=mid-last; ans=ask(L); } else{ R+=mid-last; ans=ask(R); } } else{ if(now){ L+=last-mid; ans=ask(L); } else{ R-=last-mid; ans=ask(R); } } now=!now; last=mid; if(ans) r=mid; else l=mid+1; } cout<<"= "<<l<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...