# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
51619 | model_code | Aliens (IOI07_aliens) | C++17 | 4 ms | 496 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <map>
#include <algorithm>
#include <cstdio>
#include <cstring>
#define SOLUTIONCOMMAND "solution"
#define EXAMINECOMMAND "examine"
void Initialize ( int *N, int *x0, int *y0 )
{
scanf ("%d%d%d", N, x0, y0);
}
int Rose ( int X, int Y )
{
printf( "%s %d %d\n", EXAMINECOMMAND, X, Y );
fflush( stdout );
char answer[10];
scanf ("%s", answer);
return strcmp(answer, "true") == 0;
}
void Solution ( int X, int Y )
{
printf( "%s %d %d\n", SOLUTIONCOMMAND, X, Y );
fflush( stdout );
}
using namespace std;
int n, x0, y0;
int query(int x, int y) {
if (x < 1 || x > n || y < 1 || y > n)
return 0;
return Rose(x, y);
}
int find_first_white(int dx, int dy) {
int i = 0;
while (query(x0+(dx<<i)-dx, y0+(dy<<i)-dy))
i++;
int lo = (1<<(i-1))-1;
int hi = (1<<i)-1;
while (lo+1 < hi) {
int mid = (lo+hi)/2;
if (query(x0+mid*dx, y0+mid*dy))
lo = mid;
else
hi = mid;
}
return hi;
}
int main() {
Initialize(&n, &x0, &y0);
int left = find_first_white(0, -1);
int right = find_first_white(0, 1);
int up = find_first_white(-1, 0);
int side_length = right+left-1;
int squares_left = find_first_white(0, -2*side_length);
int squares_right = find_first_white(0, 2*side_length);
int squares_up = find_first_white(-2*side_length, 0);
int edge_left = y0-left+1-(squares_left-1)*2*side_length;
int edge_up = x0-up+1-(squares_up-1)*2*side_length;
if (squares_left+squares_right-1 != 3) {
edge_left -= side_length;
edge_up -= side_length;
}
Solution(edge_up+5*side_length/2, edge_left+5*side_length/2);
return 0;
}
Compilation message (stderr)
# | 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... |