제출 #1211359

#제출 시각아이디문제언어결과실행 시간메모리
1211359sula2Tree (IOI24_tree)C++20
10 / 100
2095 ms15336 KiB
#include <bits/stdc++.h>
#define all(a) a.begin(), a.end()
#define popcount(x) __builtin_popcountll(x)
using namespace std;
using namespace chrono;

vector<int> adj[200000];
long long W[200000];
int n;
long long sum[200000];

void init(vector<int> P, vector<int> a) {
    n = P.size();
    for (int i = 1; i < n; i++) {
        adj[P[i]].push_back(i);
    }
    for (int i = 0; i < n; i++) {
        W[i] = a[i];
    }
}

long long query(int L, int R) {
    long long ans = 0;
    for (int i = n-1; i >= 0; i--) {
        if (adj[i].empty()) {
            ans += L*W[i];
            sum[i] = L;
            continue;
        }
        sum[i] = 0;
        for (int j : adj[i])
            sum[i] += sum[j];
        if (sum[i] > R) {
            ans += (sum[i] - R)*W[i];
            sum[i] = R;
        }
    }
    return ans;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...