Submission #697419

#TimeUsernameProblemLanguageResultExecution timeMemory
697419vjudge1Prisoner Challenge (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...