Submission #633276

#TimeUsernameProblemLanguageResultExecution timeMemory
633276Spade1Aliens (IOI07_aliens)C++14
100 / 100
3 ms240 KiB
#include<bits/stdc++.h> #define pii pair<int, int> #define pll pair<long long, long long> #define ll long long #define ld long double #define st first #define nd second #define pb push_back #define INF INT_MAX using namespace std; const int N = 1e5 + 10; int n, x, y; bool examine(ll x, ll y) { if (x < 1 || y < 1 || x > n || y > n) return 0; cout << "examine " << x << " " << y << endl; string s; cin >> s; return (s=="true"); } ll find(int i, int j) { ll jump = 1; while (examine(x+i*jump, y+j*jump)) jump *= 2; ll l = jump/2, r = jump; while (l < r) { ll mid = (l+r+1)/2; if (examine(x+i*mid, y+j*mid)) l = mid; else r = mid-1; } return l; } void solve() { cin >> n >> x >> y; ll lb = x-find(-1, 0), rb = x+find(1, 0), ub = y+find(0, 1), db = y-find(0, -1); ll cx = (lb+rb)/2, cy = (ub+db)/2; ll M = (rb-lb+1); ll x = cx, y = cy; while (examine(x, y)) x += 2*M; ll E = x - 2*M; x = cx, y = cy; while (examine(x, y)) x -= 2*M; ll W = x + 2*M; x = cx, y = cy; while (examine(x, y)) y += 2*M; ll N = y - 2*M; x = cx, y = cy; while (examine(x, y)) y -= 2*M; ll S = y + 2*M; cout << "solution " << (E+W)/2 << " " << (N+S)/2 << endl; } int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int t = 1; // cin >> t; while (t--) { solve(); } }
#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...