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 "dungeons.h"
#include <vector>
using namespace std;
long long con[35][200005];
long long nxt[35][200005];
long long how[200005];
long long fin;
void init(int n,vector < int > s,vector < int > p,vector < int > w,vector < int > l)
{
int i,j;
fin=s[0];
how[n]=0;
for(i=0;i<=30;i++)
{
nxt[i][n]=n;
con[i][n]=0;
}
for(i=n-1;i>=0;i--) how[i]=how[w[i]]+1;
for(i=0;i<n;i++)
{
nxt[0][i]=l[i];
con[0][i]=p[i];
}
for(i=1;i<=30;i++)
{
for(j=0;j<n;j++)
{
nxt[i][j]=nxt[i-1][nxt[i-1][j]];
con[i][j]=con[i-1][j]+con[i-1][nxt[i-1][j]];
}
}
return;
}
long long simulate(int x, int z)
{
long long ans=z,now=x,i;
if(ans>=fin) return ans+how[now]*fin;
for(i=30;i>=0;i--)
{
if(ans+=nxt[i][now]<fin)
{
ans+=con[i][now];
now=nxt[i][now];
}
}
ans+=con[0][now];
now=nxt[0][now];
return ans+how[now]*fin;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |