Submission #1189307

#TimeUsernameProblemLanguageResultExecution timeMemory
1189307Boycl07Prisoner Challenge (IOI22_prison)C++20
0 / 100
0 ms320 KiB
#include "prison.h"
#include "bits/stdc++.h"
using namespace std;
#define rep(i, n) for(int i = 1; i <= (n); ++i)
#define forn(i, l, r) for(int i = (l); (i) <= (r); ++i)
#define ford(i, r, l) for(int i = (r); (i) >= (l); --i)
int n;
vector<vector<int>> devise_strategy(int N_)
{
    n = N_;
    vector<vector<int>> res(21, vector<int>(n + 1, 0));
    function<void(int, int, int, int, int, int, int)> dnc =
    [&](int depth, int id, int sz, int l, int r, int lb, int rb)
    {
        if(l > r) return;
        res[id][0] = depth & 1;
        forn(i, lb, rb) if(i < l || i > r) res[id][i] = -((r < i) ^ (depth & 1)) - 1;
        int num_sub = min(r - l + 1, 2 + (r - l + 1 > 4));
        int len_sub = ceil(1.0 * (r - l + 1) / num_sub);
        for(int cur_sub = 1, new_l = l; cur_sub <= num_sub; ++cur_sub)
        {
            int new_r = min(r, new_l + len_sub - 1);
            forn(i, new_l, new_r) res[id][i] = sz + cur_sub;
            dnc(depth + 1, sz + cur_sub, sz + num_sub, new_l, new_r, l - 1, r + 1);
            new_l = new_r + 1;
        }
    };
    dnc(0, 0, 0, 1, n, 1, n);
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...