This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define rep(i,x,n) for(int i=x; i<n; i++)
using namespace std;
int main() {
ios_base::sync_with_stdio(false);cin.tie(nullptr);
int N, M; long s=0;
cin>>N>>M;
vector<vector<pair<int, int>>> G(N);
rep(i, 1, N+M) {
int p, w;
cin>>p>>w; --p;
G[p].push_back({i, w});
}
function<pair<int, int>(int, int)> f=[&](int i, int m) {
if(i>=N) return make_pair(m, m);
int k=0, n=G[i].size();
vector<int> A(n*2), L(n), R(n);
for(auto[j,w]:G[i]) {
auto[a,b]=f(j, m+w);
A[k*2]=L[k]=a, A[k*2+1]=R[k]=b, k++;
}
sort(begin(A), end(A));
int l=max(m, A[n-1]), r=max(m, A[n]); m=(l+r)/2;
rep(j, 0, n) s+=m<L[j] ? L[j]-m : R[j]<m ? m-R[j] : 0;
return make_pair(l, r);
};
f(0, 0);
cout<<s;
}
# | 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... |