Submission #1202035

#TimeUsernameProblemLanguageResultExecution timeMemory
1202035bynixPrisoner Challenge (IOI22_prison)C++20
80 / 100
7 ms1096 KiB
#include "bits/stdc++.h" #include "prison.h" using namespace std; int b3(int n, int pos){ for (int k = 0; k < pos - 1; k++) n /= 3; return n % 3; } int encode(int n, int pos){ int d = b3(n, pos); pos -= 1 + (d == 2); return (d << 3) | pos; } pair<int, int> decode(int val){ int d = val >> 3; int pos = (val & 7) + 1; pos += d == 2; return {d, pos}; } vector<vector<int>> devise_strategy(int N){ vector<vector<int>> strategy; for (int i = 0; i <= 22; i++) { vector<int> J(N + 1); if (i == 0){ J[0] = 1; for (int j = 1; j <= N; j++) J[j] = encode(j, 8); } else { auto [p, pos] = decode(i); J[0] = pos & 1; for (int j = 1; j <= N; j++){ int c = b3(j, pos); if (c < p) J[j] = -1 - pos % 2; else if (c > p) J[j] = pos % 2 - 2; else{ J[j] = encode(j, pos - 1); if (pos == 2 && b3(j, 1) != 1) J[j] = ~((b3(j, 1) >> 1) ^ (pos % 2)); } } } strategy.push_back(J); } return strategy; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...