Submission #626286

#TimeUsernameProblemLanguageResultExecution timeMemory
626286mraronPrisoner Challenge (IOI22_prison)C++17
65 / 100
17 ms1064 KiB
#include "prison.h" #include <vector> #include <iostream> #include <cassert> std::vector<std::vector<int>> devise_strategy(int N) { int x=24; std::vector<std::vector<int>> s(x+1, std::vector<int>(N+1, 0)); for(int i=0;i<=x;++i) { if(i==0) { int bit=12; s[i][0]=0; for(int j=1;j<=N;++j) { s[i][j]=(j&(1<<bit)?1:2); } }else { int bit=12-(i-1)/2; int bag=(bit&1)^1; //~ std::cerr<<i<<" -> "<<bag<<"\n"; int have=(i&1?1:0); s[i][0]=bag; int THIS=bag==0?-1:-2; int OTHER=bag==0?-2:-1; for(int j=1;j<=N;++j) { int curr=(j&(1<<bit))!=0; if(curr>have) { s[i][j]=OTHER; }else if(curr<have) { s[i][j]=THIS; }else { int nxt=(j&(1<<(bit-1)))!=0; //~ std::cerr<<bit+1<<"!!\n"; if(bit-1==0) { if(nxt==0) { s[i][j]=THIS; }else { s[i][j]=OTHER; } }else { //~ std::cerr<<i<<" "<<2*(bit+1)+1+nxt<<"\n"; assert(i!=2*(12-bit+1)+1+nxt); s[i][j]=2*(12-bit+1)+2-nxt; } } } } } return s; } //~ 0 -> 1 2 //~ 1 -> 3 4 //~ 2 -> 5 6
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...