Submission #841534

#TimeUsernameProblemLanguageResultExecution timeMemory
841534model_codeRobot Contest (IOI23_robot)C++17
63 / 100
154 ms5776 KiB
// partially_correct/5colors_no_cleanup.cpp /* colors.txt: #ffffff 0 #005ca5 1 #ff0000 a #ff5500 b #ffff00 c */ #include "robot.h" const int next[5] = {-1, -1, 3, 4, 2}; const int prev[5] = {-1, -1, 4, 2, 3}; const char move[5] = {'_', 'W', 'S', 'E', 'N'}; bool isdist(int x) { return 2 <= x; } void get_move(std::vector<int> S, int &Z, char &A) { bool is_start = S[1] == -2 && S[4] == -2; bool is_end = S[2] == -2 && S[3] == -2; int dir = 0; for (int i = 1; i <= 4; i++) { if (isdist(S[i])) { dir = i; } } for (int i = 1; i <= 4; i++) { if (S[i] == prev[S[dir]]) { dir = i; } } if (S[0] == 0) { if (is_start) { A = 'H'; Z = 2; } else if (dir) { A = move[dir]; Z = S[dir]; } } else if (S[0] == 1) { if (!dir) return; bool done = true; int path = 0; for (int i = 1; i <= 4; i++) { if (S[i] == 1) { path = i; } else if (S[i] >= 2 && S[i] != S[dir]) { done = false; } } if (done && path) { A = move[path]; Z = prev[S[dir]]; } else { A = move[dir]; Z = 1; } } else if (isdist(S[0])) { if (is_end) { A = 'T'; Z = 1; return; } for (int i = 1; i <= 4; i++) { if (S[i] == S[0]) { A = 'H'; Z = next[S[0]]; return; } } for (int i = 1; i <= 4; i++) { if (S[i] == 0) { A = move[i]; Z = prev[S[0]]; return; } } if (is_start) { A = 'H'; Z = 1; return; } for (int i = 1; i <= 4; i++) { if (S[i] == next[S[0]]) { A = move[i]; Z = 1; return; } } for (int i = 1; i <= 4; i++) { if (S[i] == 1) { A = move[i]; Z = next[S[0]]; return; } } } } void program_pulibot() { std::vector<int> S(5); #define LOOP(i) for (S[i] = -2; S[i] < 5; S[i]++) LOOP(0) LOOP(1) LOOP(2) LOOP(3) LOOP(4) { int Z = -1; char A; get_move(S, Z, A); if (Z != -1) set_instruction(S, Z, A); } }
#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...