Submission #1320622

#TimeUsernameProblemLanguageResultExecution timeMemory
1320622mansurPrisoner Challenge (IOI22_prison)C++20
38 / 100
10 ms1724 KiB
#include "prison.h"
#include <bits/stdc++.h>

using namespace std;

vector<vector<int>> devise_strategy(int N) {	
	int k = 0;
	while ((1 << k) <= N) k++;
	k--;
	vector<vector<int>> ans(k * 3 + 3, vector<int> (N + 1));
	for (int i = 0; i <= k * 3 + 2; i++) {
		if (i % 3 == 0) {
			ans[i][0] = 0;
			int b = k - i / 3;
			for (int j = 1; j <= N; j++) {
				if (j >> b & 1) ans[i][j] = (k - b) * 3 + 2;
				else ans[i][j] = (k - b) * 3 + 1;				
			}
			continue;
		}
		int b = k - i / 3, v = i % 3;
		ans[i][0] = 1;
		for (int j = 1; j <= N; j++) {
			if (j >> b & 1) {
				if (v == 1) ans[i][j] = -1;
				else if (b) ans[i][j] = (k + 1 - b) * 3; 
			}else {
				if (v == 2) ans[i][j] = -2;
				else if (b) ans[i][j] = (k + 1 - b) * 3;
			}
		}
	}
	return ans;
}
               
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...