#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int N, X0, Y0;
bool examine(int x, int y) {
cout << "examine " << x << " " << y << endl;
string response;
cin >> response;
return response == "true";
}
int findLeft(int x, int y) {
int low = 1, high = x, left = x;
while (low <= high) {
int mid = (low + high) / 2;
if (examine(mid, y)) {
left = mid;
high = mid - 1;
} else {
low = mid + 1;
}
}
return left;
}
int findRight(int x, int y) {
int low = x, high = N, right = x;
while (low <= high) {
int mid = (low + high) / 2;
if (examine(mid, y)) {
right = mid;
low = mid + 1;
} else {
high = mid - 1;
}
}
return right;
}
int findBottom(int x, int y) {
int low = 1, high = y, bottom = y;
while (low <= high) {
int mid = (low + high) / 2;
if (examine(x, mid)) {
bottom = mid;
high = mid - 1;
} else {
low = mid + 1;
}
}
return bottom;
}
int findTop(int x, int y) {
int low = y, high = N, top = y;
while (low <= high) {
int mid = (low + high) / 2;
if (examine(x, mid)) {
top = mid;
low = mid + 1;
} else {
high = mid - 1;
}
}
return top;
}
int main() {
cin >> N >> X0 >> Y0;
int left = findLeft(X0, Y0);
int right = findRight(X0, Y0);
int Mx = right - left + 1;
int bottom = findBottom(X0, Y0);
int top = findTop(X0, Y0);
int My = top - bottom + 1;
int M = Mx; // Assuming Mx == My
// Find the top-left corner of the entire 5x5 chessboard
int chessLeft = left;
while (chessLeft - M >= 1 && examine(chessLeft - M, Y0)) {
chessLeft -= M;
}
int chessBottom = bottom;
while (chessBottom - M >= 1 && examine(X0, chessBottom - M)) {
chessBottom -= M;
}
// The center of the chessboard is at (chessLeft + 2*M, chessBottom + 2*M)
int XC = chessLeft + 2 * M;
int YC = chessBottom + 2 * M;
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... |