#include "prison.h"
#include <bits/stdc++.h>
using namespace std;
int bt(int x, int k) {
while (k--) x /= 3;
return x % 3;
}
vector<vector<int>> devise_strategy(int N) {
int k = 7;
vector<vector<int>> ans(k * 3 + 2, vector<int> (N + 1));
ans[0][0] = 0;
for (int i = 1; i <= N; i++)
ans[0][i] = bt(i, k) + 1;
for (int i = 1; i <= k * 3 + 1; i++) {
int b = k - (i - 1) / 3, v = (i - 1) % 3;
if (!b) v = 1;
if ((k - b) & 1) {
ans[i][0] = 0;
for (int j = 1; j <= N; j++) {
int v1 = bt(j, b);
if (v1 > v) ans[i][j] = -2;
else if (v1 < v) ans[i][j] = -1;
else if (b) {
if (b == 1) {
if (j % 3 == 2) ans[i][j] = -2;
else if (j % 3 == 0) ans[i][j] = -1;
else ans[i][j] = k * 3 + 1;
continue;
}
v1 = bt(j, b - 1);
ans[i][j] = (k + 1 - b) * 3 + v1 + 1;
}
}
continue;
}
ans[i][0] = 1;
for (int j = 1; j <= N; j++) {
int v1 = bt(j, b);
if (v1 > v) ans[i][j] = -1;
else if (v1 < v) ans[i][j] = -2;
else if (b) {
if (b == 1) {
if (j % 3 == 2) ans[i][j] = -1;
else if (j % 3 == 0) ans[i][j] = -2;
else ans[i][j] = k * 3 + 1;
continue;
}
v1 = bt(j, b - 1);
ans[i][j] = (k + 1 - b) * 3 + v1 + 1;
}
}
}
cerr << "JJ";
return ans;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |