Submission #1154658

#TimeUsernameProblemLanguageResultExecution timeMemory
1154658dzuizzAliens (IOI07_aliens)C++20
40 / 100
1 ms416 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define DEBUG
int n,x,y,m,_cnt;
bool f(int x,int y){
  if(x<1||x>n||y<1||y>n) return false;
  #ifdef DEBUG
  ++_cnt;
  #endif
  cout<<"examine "<<x<<" "<<y<<endl;
  string s; cin>>s;
  return s=="true";
}
signed main(){
  cin>>n>>x>>y;
  int l=x,r=x;
  while(f(--l,y)); ++l;
  while(f(++r,y)); --r;
  int fx=(l+r)>>1,m=r-l+1;
  l=y,r=y;
  while(f(fx,--l)); ++l;
  while(f(fx,++r)); --r;
  int fy=(l+r)>>1;
  int x0=fx,x1=fx,y0=fy,y1=fy;
  for(int i=1;i<=5;++i){
    if(f(fx+i*2*m,fy)) x1=max(x1,fx+i*2*m);
    if(f(fx-i*2*m,fy)) x0=min(x0,fx-i*2*m);
    if(f(fx,fy+i*2*m)) y1=max(y1,fy+i*2*m);
    if(f(fx,fy-i*2*m)) y0=min(y0,fy-i*2*m);
    if(f(fx+i*m,fy+i*m)) x1=max(x1,fx+i*m),y1=max(y1,fy+i*m);
    if(f(fx+i*m,fy-i*m)) x1=max(x1,fx+i*m),y0=min(y0,fy-i*m);
    if(f(fx-i*m,fy+i*m)) x0=min(x0,fx-i*m),y1=max(y1,fy+i*m);
    if(f(fx-i*m,fy-i*m)) x0=min(x0,fx-i*m),y0=min(y0,fy-i*m);
  }
  int solx=(x0+x1)>>1,soly=(y0+y1)>>1;
  cout<<"solution "<<solx<<" "<<soly<<endl;
  #ifdef DEBUG
  cout<<"# of queries used: "<<_cnt<<'\n';
  #endif
  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...
#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...