Submission #907606

#TimeUsernameProblemLanguageResultExecution timeMemory
907606vjudge1Prisoner Challenge (IOI22_prison)C++17
0 / 100
1 ms348 KiB
#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 A = -1;
const int B = -2;

int id(int bit, int state){
  if(bit==-1) return 0;
  bit=12-bit;
  return bit*2-state;
}

std::vector<std::vector<int>> devise_strategy(int N) {
  vector<vi> strat(25, vi(N+1));
  for(int b = 12; b>=0; b--){
    rep(s,0,2){
      strat[id(s,b)][0] = b%2;
      if(b==12 && s==1) continue;
        // cout<<b<<' '<<s<<' '<<id(b,s)<<endl;
        rep(o,1,N+1){
          if(o&(1<<b)){
            if(s){
              strat[id(s,b)][o]=id(s-1,1);
            }else{
              strat[id(s,b)][o]=b%2==0?A:B;
            }
          }else{
            if(s){
              strat[id(s,b)][o]=b%2==0?B:A;
            }else{
              strat[id(s,b)][o]=id(s-1,0);
            }
          }
        }
    }
  }
  return strat;
}


// int main(){
//   devise_strategy(5000);
// }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...