#include "prison.h"
#include <bits/stdc++.h>
using namespace std;
//bit po bit
//1-13 ima vo A
//14-26 nema vo A
//27-39 ima vo B
//40-52 nema vo B
vector<vector<int>> devise_strategy(int n) {
vector<vector<int> > ans(53, vector<int>(n+1));
//ako vide 0 na table e base case
//vidi 12 bit
ans[0][0] = 0;
for(int i=1; i<=n; i++) {
if(i & (1 << 12)) ans[0][i] = 13;
else ans[0][i] = 26;
}
//strategija za B
for(int i=1; i<=26; i++) {
ans[i][0] = 1;
int on, val;
on = (i <= 13);
if(i <= 13) val = i - 1;
else val = i - 14;
for(int j=1; j<=n; j++) {
bool b = j & (1 << val);
if(on && !b) {
ans[i][j] = -2;
} else if(!on && b) {
ans[i][j] = -1;
} else {
ans[i][j] = i + 26;
}
}
}
//strategija za A
for(int i=27; i<=52; i++) {
ans[i][0] = 0;
if(i == 27 || i == 40) {
for(int j=1; j<=n; j++) ans[i][j] = -1;
continue;
}
int val;
if(i < 40) val = i - 27;
else val = i - 40;
val--;
// if(i == 52) cout << "nxt " << val << endl;
for(int j=1; j<=n; j++) {
bool b = j & (1 << val);
if(b) {
ans[i][j] = val + 1;
} else {
ans[i][j] = val + 14;
}
}
}
// for(int j=0; j<=n; j++) cout << ans[52][j] << " ";
// cout << endl;
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... |