Submission #1212456

#TimeUsernameProblemLanguageResultExecution timeMemory
1212456NValchanovPrisoner Challenge (IOI22_prison)C++20
56 / 100
8 ms1096 KiB
//#include "prison.h" #include <vector> using namespace std; vector < vector < int > > devise_strategy(int n) { int lg = 1; int cur = 2; while(cur <= n) { lg++; cur *= 2; } vector < vector < int > > ans; ans.resize(2 * lg + 1); for(int i = 0; i <= 2 * lg; i++) { ans[i].resize(n + 1, 0); } for(int sees = 1; sees <= n; sees++) { int which = lg - 1; bool bit = (bool)(sees & (1 << which)); ans[0][sees] = bit + 1; } for(int reads = 1; reads <= 2 * lg; reads++) { int whole = reads / 2 + reads % 2; if(whole % 2 == 0) ans[reads][0] = 0; else ans[reads][0] = 1; for(int sees = 1; sees <= n; sees++) { bool bita = !(reads % 2); int which = lg - whole; bool bitb = (bool)(sees & (1 << which)); if(bita < bitb) { if(whole % 2 == 0) ans[reads][sees] = -2; else ans[reads][sees] = -1; } else if(bita > bitb) { if(whole % 2 == 0) ans[reads][sees] = -1; else ans[reads][sees] = -2; } else { if(whole == lg) { ans[reads][sees] = 0; } else { bool nxtbit = (bool)(sees & (1 << (which - 1))); int writes = 2 * whole + nxtbit + 1; ans[reads][sees] = writes; } } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...