Submission #1263665

#TimeUsernameProblemLanguageResultExecution timeMemory
1263665DeltaStructAliens (IOI07_aliens)C++20
0 / 100
0 ms408 KiB
#include <bits/stdc++.h> using namespace std; int main(){ #define int long long int n,x,y; cin >> n >> x >> y; int r = -1,l,mid; auto f = [&n](int x,int y) -> bool { if (x<1||x>n||y<1||y>n) return false; cout << "examine" << x << ' ' << y << endl; string s; cin >> s; return (s=="true"); }; while(true){ if (!f(x+r,y)){ l = r/2,r = min(max(r,0ll),n+1); while(abs(r-l)>1){ mid = (l+r)/2; if (f(x+mid,y)) l = mid; else r = mid; } break; } r *= 2; } int a = l; r = 1; auto input = [](){ string s; cin >> s; return (s=="true"); }; while(true){ if (!f(x+r,y)){ l = r/2,r = min(max(r,0ll),n+1); while(abs(r-l)>1){ mid = (l+r)/2; if (f(x+mid,y)) l = mid; else r = mid; } break; } r *= 2; } int b = l; x += (a+b)/2; int m = b-a+1; r = 1; while(true){ if (!f(x,y+r)){ l = r/2,r = min(max(r,0ll),n+1); while(abs(r-l)>1){ mid = (l+r)/2; if (f(x,y+mid)) l = mid; else r = mid; } break; } r *= 2; } y += (l-(m-l-1))/2; if (f(x+4*m,y)) x += 2*m; else if (f(x-4*m,y)) x -= 2*m; else if (!f(x+2*m,y)) x -= m; else if (!f(x-2*m,y)) x += m; if (f(x,y+4*m)) y += 2*m; else if (f(x,y-4*m)) y -= 2*m; else if (f(x,y+3*m)) y += m; else if (f(x,y-3*m)) y -= m; cout << "solution" << ' ' << x << ' ' << y << 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...