256472026-02-23 21:55:37anonRaktárba szállítás (45 pont)cpp17Runtime error 36/4516ms5960 KiB
#include <bits/stdc++.h>
#define FastIO ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
using namespace std;
typedef long long ll;
ll fulls, C;
vector<ll> A;
vector<vector<ll>> DAG;
vector<multiset<ll>*> rems;
ll dfs(ll vertex) {
    ll largest;
    vector<ll> children;
    largest = 0;
    children.reserve(DAG[vertex].size());
    for(const auto &x : DAG[vertex]) {
        children.push_back(dfs(x));
        if(!largest || rems[children.back()]->size() > rems[largest]->size())
            largest = children.back();
    }
    if(largest) {
        for(const auto &x : children) {
            if(x != largest)
                rems[largest]->insert(rems[x]->begin(), rems[x]->end());
        }
        stack<ll> st;
        for(auto it = --(rems[largest]->end()); A[vertex]; it--) {
            if(A[vertex] >= C - *it) {
                fulls++;
                A[vertex] -= C - *it;
            }
            else {
                rems[largest]->insert(*it + A[vertex]);
                A[vertex] = 0;
            }
            st.push(*it);
            if(it == rems[largest]->begin())
                break;
        }
        while(!st.empty()) {
            rems[largest]->erase(rems[largest]->find(st.top()));
            st.pop();
        }
    }
    else {
        rems[vertex] = new multiset<ll>();
        largest = vertex;
    }
    fulls += A[vertex] / C;
    if(A[vertex] % C)
        rems[largest]->insert(A[vertex] % C);
    return largest;
}
int main() {
    FastIO;
    ll i, ri, ans, N, K, P;
    cin >> N >> K >> C;
    A.resize(N + 1);
    DAG.resize(N + 1);
    rems.resize(N + 1);
    for(i = 1; i <= N; i++) {
        cin >> P >> A[i];
        DAG[P].push_back(i);
    }
    ri = dfs(1);
    ans = min(fulls, K) * C;
    i = K - fulls - 1;
    for(auto it = --(rems[ri]->end()); i >= 0; it--, i--)
        ans += *it;
    cout << ans << '\n';
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base36/45
1Accepted0/01ms316 KiB
2Runtime error0/06ms1332 KiB
3Accepted1/11ms316 KiB
4Accepted1/11ms316 KiB
5Accepted1/12ms316 KiB
6Accepted1/11ms316 KiB
7Accepted1/11ms316 KiB
8Accepted1/11ms564 KiB
9Accepted1/18ms2140 KiB
10Accepted1/19ms2220 KiB
11Accepted1/19ms2360 KiB
12Accepted1/11ms316 KiB
13Accepted1/11ms316 KiB
14Accepted1/11ms316 KiB
15Accepted1/11ms316 KiB
16Wrong answer0/11ms316 KiB
17Accepted1/11ms316 KiB
18Wrong answer0/11ms316 KiB
19Accepted1/12ms564 KiB
20Accepted1/12ms564 KiB
21Runtime error0/24ms844 KiB
22Accepted2/28ms1664 KiB
23Wrong answer0/28ms1844 KiB
24Runtime error0/313ms2872 KiB
25Accepted3/316ms3248 KiB
26Accepted3/39ms2868 KiB
27Accepted3/38ms3124 KiB
28Accepted3/316ms5960 KiB
29Accepted3/316ms5940 KiB
30Accepted3/316ms5920 KiB