This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/* https://codeforces.com/blog/entry/120252 (EmeraldBlock) */
#include "robot.h"
const int WALL = -2, OBSTACLE = -1, EMPTY = 0, PATH = 1, WEST = 2, SOUTH = 3, EAST = 4, NORTH = 5;
void program_pulibot() {
for (int x = 0; x <= 5; x++)
for (int w = -2; w <= 5; w++)
for (int s = -2; s <= 5; s++)
for (int e = -2; e <= 5; e++)
for (int n = -2; n <= 5; n++)
if (x == EMPTY) {
if (n == WALL && w == WALL) {
if (s == EMPTY)
set_instruction({ x, w, s, e, n }, SOUTH, 'S');
else if (e == EMPTY)
set_instruction({ x, w, s, e, n }, EAST, 'E');
} else if (s == WALL && e == WALL)
set_instruction({ x, w, s, e, n }, EAST, 'H');
else if (w == EAST)
set_instruction({ x, w, s, e, n }, WEST, 'W');
else if (s == NORTH)
set_instruction({ x, w, s, e, n }, SOUTH, 'S');
else if (e == WEST)
set_instruction({ x, w, s, e, n }, EAST, 'E');
else if (n == SOUTH)
set_instruction({ x, w, s, e, n }, NORTH, 'N');
} else if (x == WEST && (w == EAST || w == EMPTY)) {
if (s == NORTH || s == EMPTY)
set_instruction({ x, w, s, e, n }, SOUTH, 'S');
else if (e == WEST || e == EMPTY)
set_instruction({ x, w, s, e, n }, EAST, 'E');
else if (n == SOUTH || n == EMPTY)
set_instruction({ x, w, s, e, n }, NORTH, 'N');
else
set_instruction({ x, w, s, e, n }, WEST, 'W');
} else if (x == SOUTH && (s == NORTH || s == EMPTY)) {
if (e == WEST || e == EMPTY)
set_instruction({ x, w, s, e, n }, EAST, 'E');
else if (n == SOUTH || n == EMPTY)
set_instruction({ x, w, s, e, n }, NORTH, 'N');
else if (w == EAST || w == EMPTY)
set_instruction({ x, w, s, e, n }, WEST, 'W');
else
set_instruction({ x, w, s, e, n }, SOUTH, 'S');
} else if (x == EAST && (e == WEST || e == EMPTY)) {
if (n == SOUTH || n == EMPTY)
set_instruction({ x, w, s, e, n }, NORTH, 'N');
else if (w == EAST || w == EMPTY)
set_instruction({ x, w, s, e, n }, WEST, 'W');
else if (s == NORTH || s == EMPTY)
set_instruction({ x, w, s, e, n }, SOUTH, 'S');
else
set_instruction({ x, w, s, e, n }, EAST, 'E');
} else if (x == NORTH && (n == SOUTH || n == EMPTY)) {
if (w == EAST || w == EMPTY)
set_instruction({ x, w, s, e, n }, WEST, 'W');
else if (s == NORTH || s == EMPTY)
set_instruction({ x, w, s, e, n }, SOUTH, 'S');
else if (e == WEST || e == EMPTY)
set_instruction({ x, w, s, e, n }, EAST, 'E');
else
set_instruction({ x, w, s, e, n }, NORTH, 'N');
} else {
if (w == EAST)
set_instruction({ x, w, s, e, n }, x, 'W');
else if (s == NORTH)
set_instruction({ x, w, s, e, n }, x, 'S');
else if (e == WEST)
set_instruction({ x, w, s, e, n }, x, 'E');
else if (n == SOUTH)
set_instruction({ x, w, s, e, n }, x, 'N');
else {
char a = 'T';
if (x == WEST)
a = w < 0 ? 'T' : 'W';
else if (x == SOUTH)
a = s < 0 ? 'T' : 'S';
else if (x == EAST)
a = e < 0 ? 'T' : 'E';
else if (x == NORTH)
a = n < 0 ? 'T' : 'N';
set_instruction({ x, w, s, e, n }, n == WALL && w == WALL || w == PATH || s == PATH || e == PATH || n == PATH ? PATH : EMPTY, a);
}
}
}
Compilation message (stderr)
robot.cpp: In function 'void program_pulibot()':
robot.cpp:83:54: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
83 | set_instruction({ x, w, s, e, n }, n == WALL && w == WALL || w == PATH || s == PATH || e == PATH || n == PATH ? PATH : EMPTY, a);
| ~~~~~~~~~~^~~~~~~~~~~~
# | 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... |