#include "prison.h"
#include <vector>
std::vector<int> ternary(int x) {
std::vector<int> ans;
for (int trit = 0; trit < 8; ++trit) {
ans.push_back(x % 3);
x /= 3;
}
return ans;
}
std::vector<std::vector<int>> devise_strategy(int N) {
std::vector<std::vector<int>> strategy(32, std::vector<int>(N + 1));
for (int val = 0; val < 32; ++val) {
int tritnum = 7 - val / 4;
int state = val % 4;
if (state == 0) {
strategy[val][0] = 0;
for (int inbaga = 1; inbaga <= N; ++inbaga) {
strategy[val][inbaga] = 4 * (val / 4) + 1 + ternary(inbaga)[tritnum];
}
} else {
strategy[val][0] = 1;
for (int inbagb = 1; inbagb <= N; ++inbagb) {
int tritval = ternary(inbagb)[tritnum];
if (tritval > state - 1) {
// B is bigger
strategy[val][inbagb] = -1;
} else if (tritval < state - 1) {
// A is bigger
strategy[val][inbagb] = -2;
} else {
// recurse
strategy[val][inbagb] = ((val / 4 + 1) * 4) % 32;
}
}
}
}
return strategy;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |