#include "dungeons.h"
#include <vector>
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=4e5+5;
long long sz,S[N],P[N],W[N],L[N],Sum[N][26],nxt[N][26],mx[N][26],d[N],nxt2[N][26],Sum2[N][26];
void init(int n, std::vector<int> s, std::vector<int> p, std::vector<int> w, std::vector<int> l){
sz=n;
for(int i=1;i<=n;i++){
S[i]=s[i-1];
P[i]=p[i-1];
W[i]=w[i-1];
L[i]=l[i-1];
W[i]++;
L[i]++;
}
S[n+1]=0;
L[n+1]=W[n+1]=1;
for(int j=0;j<=25;j++){
nxt[n+1][j]=n+1;
mx[n+1][j]=1e18;
Sum[n+1][j]=0;
nxt2[n+1][j]=n+1;
Sum2[n+1][j]=-1e18;
}
for(int i=1;i<=n;i++){
nxt[i][0]=W[i];
Sum[i][0]=S[i];
mx[i][0]=S[i];
nxt2[i][0]=L[i];
Sum2[i][0]=P[i];
}
for(int j=1;j<=25;j++){
for(int i=1;i<=n+1;i++){
nxt[i][j]=nxt[nxt[i][j-1]][j-1];
Sum[i][j]=Sum[i][j-1]+Sum[nxt[i][j-1]][j-1];
mx[i][j]=max(mx[i][j-1],mx[nxt[i][j-1]][j-1]);
Sum2[i][j]=Sum2[i][j-1]+Sum2[nxt2[i][j-1]][j-1];
nxt2[i][j]=nxt2[nxt2[i][j-1]][j-1];
}
}
d[n+1]=0;
for(int i=n;i>=1;i--){
d[i]=1+d[W[i]];
}
return ;
}
long long simulate(int x, int z){
++x;
long long power=z;
if(power>=S[x]){
//cout<<" $ $ $ "<<endl;
for(int j=25;j>=0;j--){
if((1<<j)>d[x]) continue ;
power+=Sum[x][j];
x=nxt[x][j];
//cout<<" # "<<x<<' '<<j<<' '<<power<<endl;
}
}
else{
//cout<<" # # # "<<endl;
for(int j=25;j>=0;j--){
if(Sum2[x][j]<0 || power+Sum2[x][j]>=S[x]) continue ;
power+=Sum2[x][j];
x=nxt2[x][j];
}
//cout<<" # "<<x<<' '<<power<<' ';
power+=P[x];
x=L[x];
//cout<<" $ "<<x<<' '<<power<<endl;
for(int j=25;j>=0;j--){
if((1<<j)>d[x]) continue ;
power+=Sum[x][j];
x=nxt[x][j];
}
}
return power;
}
# | 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... |