제출 #1057040

#제출 시각아이디문제언어결과실행 시간메모리
10570400npataJobs (BOI24_jobs)C++17
0 / 100
1 ms1116 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define vec vector const int MXN = 2'005; vec<int> tree[MXN]; map<int, int> thr[MXN]; int x[MXN]; void dfs(int u) { map<int, int> ch_thrs; for(int v : tree[u]) { dfs(v); for(auto [t, g] : thr[v]) { ch_thrs[t] += g; } } int money = x[u]; int total_gain = x[u]; int extra = 0; if(total_gain > 0) thr[u][extra] = total_gain; for(auto [t, g] : ch_thrs) { if(money >= t) { money += g; total_gain += g; } else { if(total_gain > 0) total_gain = 0; extra += t-money; money = t; total_gain += g; } if(total_gain > 0) thr[u][extra] = total_gain; } } int32_t main() { ios_base::sync_with_stdio(false); int N, S; cin >> N >> S; N += 1; x[0] = S; for(int i = 1; i<=N; i++) { cin >> x[i]; int p; cin >> p; tree[p].push_back(i); } //cerr << "INPUT READ" << '\n'; dfs(0); cout << thr[0][0]-1 << '\n'; }
#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...