제출 #907612

#제출 시각아이디문제언어결과실행 시간메모리
907612vjudge1죄수들의 도전 (IOI22_prison)C++17
56 / 100
12 ms1316 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 BITS = 13; const int A = -1; const int B = -2; int ID(int bit, int state){ 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>=0; 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...