Submission #90194

#TimeUsernameProblemLanguageResultExecution timeMemory
90194asifthegreatAliens (IOI07_aliens)C++14
0 / 100
2 ms484 KiB
#include <bits/stdc++.h> using namespace std; bool check(int x,int y) { string s; printf("examine %d %d\n",x,y); fflush(stdout); cin >> s; return s == "true"; } int32_t main() { int n,m; scanf("%d %d ",&n,&m); int x,y; scanf("%d %d",&x,&y); int lo = y,hi = y+m; int dan = -1,bam=-1,upore=-1,niche=-1; while(hi > lo){ int mid=(lo+hi)/2; if(check(x,mid)){ dan = max(dan,mid); lo = mid+1; } else hi = mid-1; } /*for(int mid = lo;mid <= hi;mid++){ if(check(x,mid)){ dan = max(dan,mid); } }*/ if(dan+m*4 <= n and check(x,dan+m*4)){ dan = dan+m*4; } else if(dan + m* 2 <= n and check(x,dan+m*2))dan = dan+m*2; lo = max(1,y-m); hi = y; bam = y; while(hi>lo){ int mid=(lo+hi)/2; if(check(x,mid)){ bam = min(bam,mid); hi = mid-1; } else lo = mid+1; } /*for(int mid = lo;mid <= hi;mid++){ if(check(x,mid)){ bam = min(bam,mid); } }*/ if(bam-m*4 > 0 and check(x,bam-m*4)){ bam -= m*4; } else if(bam-m*2 > 0 and check(x,bam-m*2)){ bam -= m*2; } hi = x; lo = max(1,x-m); upore = x; while(hi>lo){ int mid=(lo+hi)/2; if(check(mid,y)){ upore = min(upore,mid); hi = mid-1; } else lo = mid+1; } /*for(int mid = lo;mid <= hi;mid++){ if(check(mid,y)){ upore = min(upore,mid); } }*/ if(upore-m*4 > 0 and check(upore-m*4,y)){ upore -= m*4; } else if(upore-m*2 > 0 and check(upore-m*2,y)){ upore -= m*2; } niche = x; lo = x; hi = x+m; while(hi>lo){ int mid=(lo+hi)/2; if(check(mid,y)){ niche = max(niche,mid); lo = mid+1; } else hi = mid-1; } /*for(int mid = lo;mid <= hi;mid++){ if(check(mid,y)){ niche = max(niche,mid); } }*/ if(niche+m*4 <= n and check(niche+m*4,y)){ niche = niche+m*4; } else if(niche + m* 2 <= n and check(niche+m*2,y))niche = niche+m*2; x = (niche-upore)/2 + m; y = (dan-bam)/2 + m; printf("solution %d %d\n",x,y); fflush(stdout); return 0; }

Compilation message (stderr)

aliens.cpp: In function 'int32_t main()':
aliens.cpp:17:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d ",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~~
aliens.cpp:19:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&x,&y);
  ~~~~~^~~~~~~~~~~~~~~
#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...