Submission #1188853

#TimeUsernameProblemLanguageResultExecution timeMemory
1188853comxddddddAliens (IOI07_aliens)C++20
0 / 100
1 ms408 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; ll N; bool whoAsk(ll x, ll y) { cout << "examine " << x << " " << y << "\n" << flush; string re; cin >> re; return re == "true"; } ll find_k(ll x0, ll y0, int dx, int dy) { ll k = 1; while (true) { ll x = x0 + dx*2*k, y = y0 + dy*2*k; if (x < 1 || x > N || y < 1 || y > N) break; if (!whoAsk(x, y)) break; k <<= 1; } ll lo = 0, hi = k; while (lo < hi) { ll mid = (lo + hi + 1) >> 1; ll x = x0 + dx*2*mid, y = y0 + dy*2*mid; if (x >= 1 && x <= N && y >= 1 && y <= N && whoAsk(x, y)) lo = mid; else hi = mid - 1; } return lo; } int main(){ ll x0, y0; cin >> N >> x0 >> y0; ll kR = find_k(x0, y0, +1, 0); ll kL = find_k(x0, y0, -1, 0); ll kU = find_k(x0, y0, 0, +1); ll kD = find_k(x0, y0, 0, -1); ll x_min = x0 - 2*kL, x_max = x0 + 2*kR; ll y_min = y0 - 2*kD, y_max = y0 + 2*kU; ll Xc = (x_min + x_max) / 2; ll Yc = (y_min + y_max) / 2; cout << "solution " << Xc << " " << Yc << endl; 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...