제출 #437638

#제출 시각아이디문제언어결과실행 시간메모리
437638yiqilim5438던전 (IOI21_dungeons)C++17
0 / 100
1113 ms1048576 KiB
#include<bits/stdc++.h> #include"dungeons.h" using namespace std; typedef long long ll; typedef pair<ll,ll> pll; int n; vector<int>s,p,w,l; vector<ll>tt(5e4+5,0ll); vector<vector<pll>>ls(1005,vector<pll>(5e4+5)); void init(int N,vector<int>S,vector<int>P,vector<int>W,vector<int>L){ n = N,s = S,p = P,w = W,l = L; for(int i = n-1;i>=0;i--){ tt[i] = s[i]+tt[w[i]]; } for(int i = 0;i<n;i++){ int x = i; for(int j = 1;j<=1000;j++){ ls[i][j].first = ls[i][j-1].first+p[x]; x = l[x]; ls[i][j].second = x; } } }; ll simulate(int x,int z){ if(z>=s[x]){ return z+tt[x]; } else{ if(z+ls[x][1000].first>=s[x]){ while(true){ if(z>=s[x]) return z+tt[x]; else z += p[x]; x = l[x]; } } else{ z += ls[x][1000].first; x = ls[x][1000].second; return simulate(x,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...