Submission #1323645

#TimeUsernameProblemLanguageResultExecution timeMemory
1323645huoiJobs (BOI24_jobs)C++17
0 / 100
136 ms207140 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define INF 1e18 int n; vector<int> p; vector<vector<int>> adj; void solve() { int n; cin >> n; p.resize(n + 1); vector<int> roots; vector<queue<int>> stk(n + 1); multiset<pair<int, int>> st; cin >> p[0]; int curroot = 0; for (int i = 1; i <= n; i++) { int dep; cin >> p[i] >> dep; if (dep == 0) { roots.push_back(i); curroot = i; } stk[curroot].push(p[i]); } bool popped = true; while (popped) { popped = false; for (int root : roots) { if (stk[root].empty()) continue; int req = 0, sum = 0; do { sum += stk[root].front(); req = min(req, sum); stk[root].pop(); popped = true; } while (!stk[root].empty() && sum <= 0); st.insert({-req, sum}); } } int ans = 0; for (auto [a, b] : st) { ans += b; } cout << ans; } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); return 0; }
#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...