#include "prison.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
int pw[10];
int p[5001][10];
void prec()
{
pw[0]=1;
for(int i=1;i<=7;i++)
pw[i]=pw[i-1]*3;
for(int i=0;i<=5000;i++)
{
int x=i;
for(int j=7;j>=0;j--)
{
while(x>=pw[j])
{
p[i][j]++;
x-=pw[j];
}
p[i][j]--;
}
}
}
std::vector<std::vector<int>> devise_strategy(int n)
{
prec();
vector<vector<int> > s;
for(int i=0;i<=22;i++)
{
s.push_back({});
for(int j=0;j<=n;j++)
s[i].push_back(0);
}
s[0][0]=0;
for(int j=1;j<=n;j++)
s[0][j]=7*3+p[j][7];
for(int i=2;i<=22;i++)
{
int h=i%3;
if(h==2)h=-1;
int b=i/3;
if(i%3==2)b++;
if(b%2==1)s[i][0]=1;
else s[i][0]=0;
for(int j=1;j<=n;j++)
{
if(h==p[j][b])
{
if(b==1)
{
if(p[j][0]==0)s[i][j]=1;
else if(p[j][0]==-1)s[i][j]=-2;
else s[i][j]=-1;
}
else s[i][j]=3*(b-1)+p[j][b-1];
}
else
{
if(b%2==1&&h>p[j][b]||b%2==0&&h<p[j][b])s[i][j]=-2;
else s[i][j]=-1;
}
}
}
return s;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |