이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 = 2;
const int A = -1;
const int B = -2;
int id(int bit, int state){
if(bit==-1) return 0;
bit=BITS-bit;
return bit*2-state;
}
std::vector<std::vector<int>> devise_strategy(int N) {
vector<vi> strat(2*BITS+1, vi(N+1));
for(int b = BITS; b>=0; b--){
rep(s,0,2){
strat[id(s,b)][0] = b%2;
if(b==BITS && s==1) continue;
rep(o,1,N+1){
if(o&(1<<b)){
if(s){
strat[id(b,s)][o]=id(b-1,1);
}else{
strat[id(b,s)][o]=b%2==0?A:B;
}
}else{
if(s){
strat[id(b,s)][o]=b%2==0?B:A;
}else{
strat[id(b,s)][o]=id(b-1,0);
}
}
}
}
}
// rep(i,0,sz(strat)){
// cout<<i<<": ";
// rep(j,0,sz(strat[i])) cout << strat[i][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... |