Submission #1154638

#TimeUsernameProblemLanguageResultExecution timeMemory
1154638i271828Aliens (IOI07_aliens)C++20
100 / 100
0 ms408 KiB
#include <bits/stdc++.h> #define ll long long #define pii pair<int,int> using namespace std; ll N=19; ll xinit=6; ll yinit=3; bool check(ll x,ll y){ if (x<=0||x>N||y<=0||y>N) return false; cout<<"examine "<<x<<" "<<y<<endl; string str="false"; cin>>str; if (str=="true") return true; else return false; } ll sch(ll s,ll e,bool axis,bool dir){ if (dir){ while (s!=e){ int m=(s+e+1)>>1; bool c; if (axis==0) c=check(m,yinit); else c=check(xinit,m); if (c) s=m; else e=m-1; } }else{ while (s!=e){ int m=(s+e)>>1; bool c; if (axis==0) c=check(m,yinit); else c=check(xinit,m); if (c) e=m; else s=m+1; } } return s; } vector<int> test={5,3}; int main(){ cin>>N>>xinit>>yinit; ll r=sch(xinit,N,0,1); ll l=sch(0,xinit,0,0); ll xdif=(r-l+1); int xa=1; int M,R; for (auto v:test){ if (xdif%v!=0) continue; M=xdif/v; R=M/2; if (!check(l+M+R,yinit)){ xa=v; break; } } M=xdif/xa,R=M/2; int xb=(5-xa)/2; int xsides=0; for (int i=-xb;i<=xb;i++){ if (i<0 && check(l+2*i*M, yinit)) xsides--; if (i>0 && check(r+2*i*M, yinit)) xsides++; } int xmid=((l+r)>>1) + xsides*M; ll u=sch(yinit,N,1,1); ll d=sch(0,yinit,1,0); ll ydif=(u-d+1); int ya=1; for (auto v:test){ if (ydif%v!=0) continue; M=ydif/v; R=M/2; if (!check(xinit,d+M+R)){ ya=v; break; } } M=ydif/ya,R=M/2; int yb=(5-ya)/2; int ysides=0; for (int i=-yb;i<=yb;i++){ if (i<0 && check(xinit, d+2*i*M)) ysides--; if (i>0 && check(xinit, u+2*i*M)) ysides++; } int ymid=((d+u)>>1) + ysides*M; cout<<"solution "<<xmid<<" "<<ymid<<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...
#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...