This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "prison.h"
#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define F first
#define S second
#define pb push_back
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
const int BITS = 13;
const int A = -1;
const int B = -2;
int ID(int bit, int state){
if(bit==0){
if(state==0) return A;
return B;
}
if(bit==-1) return 0;
bit=BITS-bit;
assert(bit*2-state >= 0);
assert(bit*2-state < 2*BITS+1);
return bit*2-state;
}
std::vector<std::vector<int>> devise_strategy(int N) {
vector<vi> strat(2*BITS-1, vi(N+1,0));
for(int b = BITS; b>=1; b--){
rep(s,0,2){
if(b==BITS && s==1) continue;
strat[ID(b,s)][0] = (BITS-b)%2;
rep(o,1,N+1){
if(o&(1<<b)){
if(s || b==BITS){
strat[ID(b,s)][o]=ID(b-1, (o&(1<<(b-1)))>0);
}else{
strat[ID(b,s)][o]=(BITS-b)%2==0?B:A;
}
}else{
if(s){
strat[ID(b,s)][o]=(BITS-b)%2==0?A:B;
}else{
strat[ID(b,s)][o]=ID(b-1, (o&(1<<(b-1)))>0);
}
}
}
cout<<b<<" "<<s<<" ("<<ID(b,s)<<"):";
rep(j,0,N+1) cout<<' ' << strat[ID(b,s)][j];
cout<<endl;
}
}
return strat;
}
// int main(){
// devise_strategy(5000);
// }
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |