제출 #1164620

#제출 시각아이디문제언어결과실행 시간메모리
1164620SmuggingSpun죄수들의 도전 (IOI22_prison)C++20
65 / 100
7 ms1260 KiB
#include<bits/stdc++.h>
#include "prison.h"
using namespace std;
template<class T>void minimize(T& a, T b){
    if(a > b){
        a = b;
    }
}
vector<vector<int>>devise_strategy(int n){
    vector<vector<int>>s(25, vector<int>(n + 1));
    s[0][0] = 0;
    auto get = [&] (int bit, bool parity){
        return ((12 - bit) << 1) + int(parity) + 1;
    };
    for(int i = 1; i <= n; i++){
        s[0][i] = 1 + ((i >> 12) & 1);
    }    
    for(int i = 1; i < 25; i++){
        bool on = bool((i & 1) ^ 1);
        int bit = 12 - ((i - 1) >> 1);
        if(bit & 1){
            s[i][0] = 0;
            for(int j = 1; j <= n; j++){
                if(1 << bit & j){
                    s[i][j] = (on ? ((bit == 1 ? ((j & 1) ? -2 : -1) : get(bit - 1, (j >> (bit - 1)) & 1))) : -2);
                }
                else{
                    s[i][j] = (on ? -1 : ((bit == 1 ? ((j & 1) ? -2 : -1) : get(bit - 1, (j >> (bit - 1)) & 1))));
                }
            }
        }
        else{
            s[i][0] = 1;
            for(int j = 1; j <= n; j++){
                if(1 << bit & j){
                    s[i][j] = (on ? ((bit == 1 ? ((j & 1) ? -1 : -2) : get(bit - 1, (j >> (bit - 1)) & 1))) : -1);
                }
                else{
                    s[i][j] = (on ? -2 : ((bit == 1 ? ((j & 1) ? -1 : -2) : get(bit - 1, (j >> (bit - 1)) & 1))));
                }
            }
        }
    }
    return s;
}   
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...