제출 #108916

#제출 시각아이디문제언어결과실행 시간메모리
108916MetBAliens (IOI07_aliens)C++14
20 / 100
3086 ms384 KiB
#include <iostream> #include <cstdlib> #include <string> #include <set> #include <map> #include <algorithm> #include <bitset> #include <queue> #include <math.h> #include <stack> #include <vector> #include <string.h> #include <random> typedef long long ll; const ll MOD = 1e9 + 7, INF = 1e18; using namespace std; ll n, x, y, min_x, max_x, min_y, max_y; bool query (ll x, ll y) { if (x <= 0 || x > n || y <= 0 || y > n) return false; cout << "examine " << x << ' ' << y << endl; fflush (stdout); string s; cin >> s; if (s == "true") return true; else return false; } int main () { cin >> n >> x >> y; max_x = min_x = x; max_y = min_y = y; int p = 1; while (query (x + p, y)) { p *= 2; } int l = x + p / 2, r = x + p; while (l < r) { int mid = (l + r + 1) / 2; if (query (mid, y)) l = mid; else r = mid - 1; } max_x = l; p = 1; while (query (x - p, y)) { p *= 2; } l = x - p, r = x - p / 2; while (l < r) { int mid = (l + r) / 2; if (query (mid, y)) r = mid; else l = mid + 1; } min_x = l; p = 1; while (query (x, y + p)) { p *= 2; } l = y + p / 2, r = y + p; while (l < r) { int mid = (l + r + 1) / 2; if (query (x, mid)) l = mid; else r = mid - 1; } max_y = l; p = 1; while (query (x, y - p)) { p *= 2; } l = y - p, r = y - p / 2; while (l < r) { int mid = (l + r) / 2; if (query (x, mid)) r = mid; else l = mid + 1; } min_y = l; ll m = max_x - min_x + 1; x = (min_x + max_x) / 2; y = (min_y + max_y) / 2; ll x_c = x - 2 * m; ll y_c = y - 2 * m; if (query (x + 2 * m, y)) x_c += 2 * m; if (query (x + 4 * m, y)) x_c += 2 * m; if (query (x, y + 2 * m)) y_c += 2 * m; if (query (x, y + 4 * m)) y_c += 2 * m; cout << "solution " << x_c << ' ' << y_c << endl; fflush (stdout); }
#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...