제출 #697419

#제출 시각아이디문제언어결과실행 시간메모리
697419vjudge1죄수들의 도전 (IOI22_prison)C++17
80 / 100
12 ms1052 KiB
//#include "prison.h" #include <stdio.h> #include <vector> using namespace std; vector<vector<int>> devise_strategy(int N){ vector<vector<int>> res; res.resize(23, vector<int>(N+1, 0)); res[0][0] = 0; for(int i=1; i<=21; i++){ if((i-1)%6 < 3) res[i][0] = 1; else res[i][0] = 0; } res[22][0] = 0; for(int j=1; j<=N; j++){ res[0][j] = 1+j/2187; if(j/2187 == 0){ res[1][j] = (j%2187)/729+4; res[2][j] = -2; res[3][j] = -2; } else if(j/2187 == 1){ res[1][j] = -1; res[2][j] = (j%2187)/729+4; res[3][j] = -2; } else if(j/2187 == 2){ res[1][j] = -1; res[2][j] = -1; res[3][j] = (j%2187)/729+4; } if((j%2187)/729 == 0){ res[4][j] = (j%729)/243+7; res[5][j] = -1; res[6][j] = -1; } else if((j%2187)/729 == 1){ res[4][j] = -2; res[5][j] = (j%729)/243+7; res[6][j] = -1; } else if((j%2187)/729 == 2){ res[4][j] = -2; res[5][j] = -2; res[6][j] = (j%729)/243+7; } if((j%729)/243 == 0){ res[7][j] = (j%243)/81+10; res[8][j] = -2; res[9][j] = -2; } else if((j%729)/243 == 1){ res[7][j] = -1; res[8][j] = (j%243)/81+10; res[9][j] = -2; } else if((j%729)/243 == 2){ res[7][j] = -1; res[8][j] = -1; res[9][j] = (j%243)/81+10; } if((j%243)/81 == 0){ res[10][j] = (j%81)/27+13; res[11][j] = -1; res[12][j] = -1; } else if((j%243)/81 == 1){ res[10][j] = -2; res[11][j] = (j%81)/27+13; res[12][j] = -1; } else if((j%243)/81 == 2){ res[10][j] = -2; res[11][j] = -2; res[12][j] = (j%81)/27+13; } if((j%81)/27 == 0){ res[13][j] = (j%27)/9+16; res[14][j] = -2; res[15][j] = -2; } else if((j%81)/27 == 1){ res[13][j] = -1; res[14][j] = (j%27)/9+16; res[15][j] = -2; } else if((j%81)/27 == 2){ res[13][j] = -1; res[14][j] = -1; res[15][j] = (j%27)/9+16; } if((j%27)/9 == 0){ res[16][j] = (j%9)/3+19; res[17][j] = -1; res[18][j] = -1; } else if((j%27)/9 == 1){ res[16][j] = -2; res[17][j] = (j%9)/3+19; res[18][j] = -1; } else if((j%27)/9 == 2){ res[16][j] = -2; res[17][j] = -2; res[18][j] = (j%9)/3+19; } if((j%9)/3 == 0){ if(j%3 == 0){ res[19][j] = -2; } else if(j%3 == 1){ res[19][j] = 22; } else if(j%3 == 2){ res[19][j] = -1; } res[20][j] = -2; res[21][j] = -2; } else if((j%9)/3 == 1){ res[19][j] = -1; if(j%3 == 0){ res[20][j] = -2; } else if(j%3 == 1){ res[20][j] = 22; } else if(j%3 == 2){ res[20][j] = -1; } res[21][j] = -2; } else if((j%9)/3 == 2){ res[19][j] = -1; res[20][j] = -1; if(j%3 == 0){ res[21][j] = -2; } else if(j%3 == 1){ res[21][j] = 22; } else if(j%3 == 2){ res[21][j] = -1; } } if(j%3 == 0) res[22][j] = -1; else if(j%3 == 1) res[22][j] = 22; else if(j%3 == 2) res[22][j] = -2; } /* for(int i=0; i<=25; i++) printf("%d\n", res[i].size()); for(int i=0; i<=22; i++){ for(int j=0; j<=30; j++){ printf("%d ", res[i][j]); } printf("\n"); } */ return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...