Submission #979755

#TimeUsernameProblemLanguageResultExecution timeMemory
979755sleepntsheepPrisoner Challenge (IOI22_prison)C++17
0 / 100
0 ms348 KiB
#include "prison.h" //#include<cstdio> #include <vector> std::vector<std::vector<int>> devise_strategy(int N) { /* * compare digits-by-digits * * On base B, this happens ln(N)/ln(B) iterations * each iterations need B place to store the result, * and another to denotes that one need to check the next bits * f(B) = (B + 1) * ln(N) / ln (B) */ constexpr int B = 4, X = 30; std::vector<std::vector<int> > s(X+1, std::vector<int>(N+1)); auto get = [&](int x, int i) { while(i--) x/=B; return x%B; }; for(int read=0;read<=X;++read) { auto write = [&](int j,int x) { s[read][j] = x; }; int at=(read)/(B+1); int dd=(read)%(B+1); if(dd>0) { write(0, 1); --dd; for(int i=1;i<=N;++i) { int ee=get(i,at); if(ee==dd) write(i, (at>0) ? (at)*(B+1): -1); else write(i, ee>dd?-1:-2); } } else { write(0,0); for(int i=1;i<=N;++i) { int to = at ? at - 1 : 6; write(i, to*(B+1)+1+get(i,to)); } } } return s; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...