#include "prison.h"
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pb push_back
using namespace std;
typedef pair<ll,ll> pii;
typedef pair<ll,pii> ipii;
const int MAXN = 3e5+100;
const ll INF = 2e18+10;
const int LOG = 12;
int n;
vector<vector<int>> ANS;
int cek(int i, int v){
int val = (i>>(2*v)) & 3;
return val;
}
std::vector<std::vector<int>> devise_strategy(int N) {
n = N;
// cout << cek(2048,5) << ' ' <<cek(3072, 5) << " p\n";
vector<int> vec; // mulai
vec.pb(0); // buka a
for(int i=1; i<=n; i++){
// buka A, tulis i
int val = cek(i, 6);
if(val==2 || val==3) vec.pb(13 + 1);
else vec.pb(12 + 1);
}
ANS.pb(vec);
// bit -> 0 - 6
// -2 --> b lebih kecil, -1 --> a
// 1-14 --> A ke B
for(int j=1; j<=14; j++){ // kalo di board = j
int p = j-1;
int bit = p/2, ada = p%2; // 4^bit, 2/3 bukan
vector<int> tem; tem.pb(1); // open b
if(ada){ // 2 / 3
for(int i=1; i<=n; i++){
if(cek(i, bit)==2){
tem.pb(2*bit + 15); // = 2 / 3
} else if(cek(i,bit)==3){
tem.pb(2*bit+1 + 15);
} else tem.pb(-2); // b lebih kecil
}
} else { // 0 / 1
for(int i=1; i<=n; i++){
if(cek(i, bit)==2 || cek(i,bit)==3){
tem.pb(-1); // a lebi kecil
} else if(cek(i,bit)==0){
tem.pb(2*bit + 15);
} else tem.pb(2*bit+1 + 15); // = 0/1, tanya bit
}
}
// cout << tem.size() << "siz2\n";
ANS.pb(tem);
}
// 15 - 28 --> B ke A
for(int j=15; j<=28; j++){ // kalo di board = j
int p = j-15; // bitnya yg sblmnya
int bit = p/2, big = p%2;
vector<int> tem; tem.pb(0); // open a
if(big){ // b bigger
for(int i=1; i<=n; i++){
if(cek(i,bit) == 3 || cek(i,bit) == 1){
int b = bit-1;// lanjut
int val = cek(i, b);
if(val==2 || val==3) tem.pb(2*b+1 + 1);
else tem.pb(2*b + 1);
}else {
tem.pb(-1); // a small
}
}
} else { // b kecil
for(int i=1; i<=n; i++){
if(cek(i,bit) == 2 || cek(i,bit) == 0){
int b = bit-1; // lanjut
int val = cek(i, b);
if(val==2 || val==3) tem.pb(2*b+1 + 1);
else tem.pb(2*b + 1);
} else {
tem.pb(-2); // b small
}
}
}
// cout << tem.size() << "siz\n";
ANS.pb(tem);
}
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... |