#include "tree.h"
#include <bits/stdc++.h>
#define maxn 200005
using namespace std;
int n;
vector<int> par, w;
int64_t cost[maxn];
void init(vector<int> P, vector<int> W) {
n = P.size(); par = P; w = W;
}
long long query(int L, int R) {
int64_t ans = 0;
for (int i = 0; i < n; i++) cost[i] = 0;
for (int i = n-1; i >= 0; i--) {
if (cost[i] > R) {
int64_t cur_coef = R-cost[i];
if (par[i] >= 0) cost[par[i]] += cur_coef;
ans += w[i] * (-cur_coef);
continue;
}
if (cost[i] < L) {
int64_t cur_coef = L-cost[i];
if (par[i] >= 0) cost[par[i]] += cur_coef;
ans += w[i] * cur_coef;
}
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |