제출 #1132918

#제출 시각아이디문제언어결과실행 시간메모리
1132918Szymon_PilipczukDungeons Game (IOI21_dungeons)C++20
37 / 100
7095 ms109188 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...