This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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] = -2;
else v[i][j] = -1;
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |