제출 #1130149

#제출 시각아이디문제언어결과실행 시간메모리
1130149alosza죄수들의 도전 (IOI22_prison)C++20
0 / 100
0 ms324 KiB
#include "prison.h"

#include <bits/stdc++.h>

using namespace std;

const int x = 22;

string toBase3(int n)
{
	//cout << "converted" << " ";
	string s = "";
	while(n != 0)
	{
		s = to_string(n%3) + s;
		n /= 3;
	}
	while(s.length() < 8)
	{
		s = "0" + s;
	}
	//cout << "converted" << "\n";
	return s;
}

vector<vector<int>> devise_strategy(int N)
{
	vector<vector<int>> res(x);
	for(int i = 0; i < x; i++)
	{
		res[i] = vector<int>(N+1);
		res[i][0] = ((i+2) / 3) % 2;
		if(i == 0)
		{
			for(int j = 1; j < N+1; j++)
			{
				string base3 = toBase3(j);
				//cout << base3 << " " << base3[0] << ", " << (base3[0] + "") << "\n";
				res[i][j] = base3[0] - '0' + 1;
			}
		}
		else
		{
			for(int j = 1; j < N+1; j++)
			{
				string base3 = toBase3(j);
				int lastdigit = (i-1)%3;
				int digit = base3[(i-1)/3] - '0';
				if(digit != lastdigit)
				{
					int thisnumber = -1 - res[i][0];
					res[i][j] = (digit < lastdigit)? thisnumber : (-3 - thisnumber);
				}
				else
				{
					res[i][j] = base3[(i+2)/3] - '0' + i*3 + 1;
				}
			}
		}
	}
	return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...