제출 #437778

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