제출 #625979

#제출 시각아이디문제언어결과실행 시간메모리
625979I_love_Hoang_Yen죄수들의 도전 (IOI22_prison)C++17
38 / 100
18 ms1620 KiB
#include "bits/stdc++.h"
using namespace std;

const int NBIT = 13;
std::pair<int,int> decode(int encoded) {
    return {
        NBIT - encoded / 3 - 1,
        encoded % 3,
    };
}

int encode(int bit, int t) {
    if (bit < 0) return 0;
    return (NBIT - bit - 1) * 3 + t;
}

std::vector<std::vector<int>> devise_strategy(int n) {
    const int NSTATE = NBIT * 3;
    std::vector<std::vector<int>> res(NSTATE, std::vector<int> (n+1, 0));

    for (int state = 0; state < NSTATE; ++state) {
        auto [bit, t] = decode(state);
        if (t == 0) res[state][0] = 0;
        else res[state][0] = 1;

        for (int i = 1; i <= n; ++i) {
            std::bitset<NBIT> bits {(unsigned) i};

            if (t == 0) {
                res[state][i] = encode(bit, bits[bit] + 1);
            } else {
                int a_bit = t - 1;
                int b_bit = bits[bit];
                if (a_bit < b_bit) res[state][i] = -1;
                else if (a_bit > b_bit) res[state][i] = -2;
                else res[state][i] = encode(bit - 1, 0);
            }
        }
    }

    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...