Submission #626736

# Submission time Handle Problem Language Result Execution time Memory
626736 2022-08-11T17:48:45 Z elalabaj Fireworks (APIO16_fireworks) C++17
26 / 100
1 ms 344 KB
#include <bits/stdc++.h>

typedef long long ll;

struct V {
    int w = 0;
    std::vector<int> edges;
    ll y0 = 0;
    int d0 = 0;
    std::priority_queue<int> points;
};

void solve(int i, std::vector<V>& graph) {
    V& v = graph[i];
    if (v.edges.empty()) return;

    for (auto j : v.edges) {
        solve(j, graph);
        V& w = graph[j];
        v.y0 += w.y0;
        v.d0 += w.d0;
        if (v.points.size() < w.points.size()) {
            std::swap(v.points, w.points);
        }
        while (!w.points.empty()) {
            v.points.push(w.points.top());
            w.points.pop();
        }
    }

    if (i == 1) return;

    v.y0 += v.w;
    ll pv1 = v.points.top(); v.points.pop();
    ll pv2 = v.points.top(); v.points.pop();

    while (v.d0 + (int)v.points.size() > -1) {
        pv1 = pv2;
        pv2 = v.points.top();
        v.points.pop();
    }
    v.points.push(pv2 + v.w);
    v.points.push(pv1 + v.w);
}


int main() {
	std::ios_base::sync_with_stdio(false);
	std::cin.tie(nullptr);
	std::cout.tie(nullptr);

    int n, m;
    std::cin >> n >> m;

    std::vector<V> graph(n + m + 1);
    for (int i = 2; i <= n + m; i++) {
        int a, b;
        std::cin >> a >> b;
        graph[a].edges.push_back(i);
        graph[i].w = b;
    }

    for (int i = n + 1; i <= n + m; i++) {
        graph[i].y0 = graph[i].w;
        graph[i].d0 = -1;
        graph[i].points.push(graph[i].w);
        graph[i].points.push(graph[i].w);
    }

    solve(1, graph);

    std::vector<int> points;
    while (!graph[1].points.empty()) {
        points.push_back(graph[1].points.top());
        graph[1].points.pop();
    }
    std::reverse(points.begin(), points.end());

    int x = 0;
    ll y = graph[1].y0;
    int d = graph[1].d0;
    ll min = y;
    for (auto p : points) {
        y += (ll) d * (p - x);
        d++;
        x = p;
        min = std::min(min, y);
    }    

    std::cout << min << '\n';

	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 320 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 328 KB Output is correct
5 Correct 0 ms 324 KB Output is correct
6 Correct 0 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 0 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 344 KB Output is correct
11 Correct 1 ms 320 KB Output is correct
12 Correct 1 ms 340 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 324 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 324 KB Output is correct
19 Correct 1 ms 324 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 320 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 0 ms 328 KB Output is correct
15 Correct 0 ms 324 KB Output is correct
16 Correct 0 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 0 ms 340 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 1 ms 344 KB Output is correct
21 Correct 1 ms 320 KB Output is correct
22 Correct 1 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 1 ms 324 KB Output is correct
26 Correct 1 ms 340 KB Output is correct
27 Correct 1 ms 340 KB Output is correct
28 Correct 1 ms 324 KB Output is correct
29 Correct 1 ms 324 KB Output is correct
30 Incorrect 1 ms 340 KB Output isn't correct
31 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 320 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 0 ms 328 KB Output is correct
15 Correct 0 ms 324 KB Output is correct
16 Correct 0 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 0 ms 340 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 1 ms 344 KB Output is correct
21 Correct 1 ms 320 KB Output is correct
22 Correct 1 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 1 ms 324 KB Output is correct
26 Correct 1 ms 340 KB Output is correct
27 Correct 1 ms 340 KB Output is correct
28 Correct 1 ms 324 KB Output is correct
29 Correct 1 ms 324 KB Output is correct
30 Incorrect 1 ms 340 KB Output isn't correct
31 Halted 0 ms 0 KB -