#include "prison.h"
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> devise_strategy(int N) {
vector<vector<int>> v;
int cnt = 1, nw = 0, MX = 12;
vector<pair<int, int>> num;
vector<vector<int>> put;
vector<int> which;
which.push_back(0);
num.push_back({0, 0});
put.resize(MX + 1);
for (int i = MX; i >= 1; i--) {
num.push_back({i, 0});
put[i].push_back(num.size() - 1);
num.push_back({i, 1});
put[i].push_back(num.size() - 1);
which.push_back(nw);
which.push_back(nw);
nw ^= 1;
}
v.resize(num.size());
v[0].push_back(0);
// cout << "0 ";
for (int i = 1; i <= N; i++) {
v[0].push_back(((i & (1 << MX)) > 0) + 1);
// cout << v[0].back() << " ";
}
// cout << "\n";
for (int i = 1; i < num.size(); i++) {
int get = num[i].second, ff = num[i].first;
// cout << "kers " << num[i].first << " " << num[i].second << "\n";
v[i].push_back(which[i] ^ 1);
// cout << v[i][0] << " ";
for (int j = 1; j <= N; j++) {
int bit = ((j & (1 << ff)) > 0);
if ((bit < get)) {
v[i].push_back(-((which[i] ^ 1) + 1));
} else if (bit > get) {
v[i].push_back(-((which[i]) + 1));
} else {
if (ff > 1)
v[i].push_back(put[(ff - 1)][(((1 << (ff - 1)) & j) > 0)]);
if (ff == 0)
v[i].push_back(-1);
if (ff == 1) {
if ((((1 << (ff - 1)) & j) > 0))
v[i].push_back(-((which[i]) + 1));
else
v[i].push_back(-((which[i] ^ 1) + 1));
}
}
// cout << v[i].back() << " ";
}
// cout << "\n";
}
return v;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |