Submission #1164620

#TimeUsernameProblemLanguageResultExecution timeMemory
1164620SmuggingSpunPrisoner Challenge (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...