#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |