Submission #660870

#TimeUsernameProblemLanguageResultExecution timeMemory
660870mychecksedadPrisoner Challenge (IOI22_prison)C++17
0 / 100
1 ms296 KiB
#include <bits/stdc++.h> using namespace std; int k = 3, p[10]; std::vector<std::vector<int>> devise_strategy(int n){ p[0] = 1; for(int i = 1; i <= 9; ++i) p[i] = p[i - 1] * 3; vector<vector<int>> v(23); for(int i = 0; i <= 22; ++i) v[i].resize(n+1); v[0][0] = 0; for(int i = 1; i <= 22; ++i) v[i][0] = (((i-1)/3)%2 ? 0 : 1); for(int i = 1; i <= n; ++i){ v[0][i] = (i / p[7]) + 1; } for(int i = 1; i <= 22; ++i){ for(int j = 1; j <= n; ++j){ if(i==22){ if(j%3 == 0) v[i][j] = -1; else v[i][j] = -2; continue; } int x = (i - 1) / 3; int val = (i - 1) % 3; int D = (j % p[8 - x]) / p[7 - x]; if(x == 6){ int d = j % p[7 - x]; int divisor = p[6 - x]; if(d/divisor == 0) v[i][j] = -2; else if(d/divisor == 2) v[i][j] = -1; else v[i][j] = 22; }else if(x % 2){ if(D != val){ v[i][j] = (D < val ? -1 : -2); }else{ if(x == 7) v[i][j] = -2; else{ int d = j % p[7 - x]; int divisor = p[6 - x]; v[i][j] = d / divisor + (x * 3 + 4); } } }else{ if(D != val){ v[i][j] = (D < val ? -2 : -1); }else{ if(x == 7) v[i][j] = -2; else{ int d = j % p[7 - x]; int divisor = p[6 - x]; v[i][j] = d / divisor + (x * 3 + 4); } } } } } return v; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...