#include <bits/stdc++.h>
#include "dungeons.h"
using namespace std;
int j[19][400001][3];
int n;
int s[400000];
int p[400000];
int w[400000];
int l[400000];
void init(int nt,vector<int> st,vector<int> pt,vector<int> wt,vector<int> lt)
{
n = nt;
for(int i =0 ;i<n;i++)
{
s[i] = st[i];
p[i] = pt[i];
w[i] = wt[i];
l[i] = lt[i];
}
for(int i = 0;i<n;i++)
{
j[0][i][0] = w[i];
j[0][i][1] = s[i];
j[0][i][2] = s[i];
}
j[0][n][0] = n;
j[0][n][1] = 0;
j[0][n][2] = 0;
/*for(int i = 0;i<n;i++)
{
cerr<<j[0][i][0]<<" "<<j[0][i][1]<<" "<<j[0][i][2]<<"\n";
}*/
for(int w = 1;w<19;w++)
{
for(int i = 0;i<=n;i++)
{
j[w][i][0] = j[w-1][j[w-1][i][0]][0];
j[w][i][1] = max(j[w-1][i][1],j[w-1][j[w-1][i][0]][1] - j[w-1][i][2]);
j[w][i][2] = j[w-1][i][2] + j[w-1][j[w-1][i][0]][2];
}
}
/*cerr<<"\n";
for(int w = 0;w<19;w++)
{
for(int i = 0;i<n;i++)
{
cerr<<j[w][i][0]<<" "<<j[w][i][1]<<" "<<j[w][i][2]<<"\n";
}
cerr<<"\n";
}*/
}
long long simulate(int x,int z)
{
while(x != n)
{
for(int w = 18;w>=0;w--)
{
if(j[w][x][1] <=z)
{
z += j[w][x][2];
x = j[w][x][0];
}
}
if(x != n)
{
z+= p[x];
x = l[x];
}
}
return z;
}
# | 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... |