Submission #1190038

#TimeUsernameProblemLanguageResultExecution timeMemory
1190038epicci23Tree (IOI24_tree)C++20
10 / 100
2093 ms9888 KiB
#include "bits/stdc++.h"
#include "tree.h"
#define ll long long
#define all(v) v.begin() , v.end()
#define sz(a) (int)a.size()
using namespace std;

ll n;
vector<ll> p, w;

void init(vector<int> P, vector<int> W){
  n = sz(P);
  p.resize(n),w.resize(n);
  for(int i = 0; i < n; i++){
    p[i] = P[i];
    w[i] = W[i];
  }
}

ll query(int L, int R) {
  vector<ll> coef(n, 0), sub(n, 0);
  for(int i = n - 1; i >= 0; i--){
    if(sub[i] < L){
     coef[i] = L - sub[i];
    }
    else if(sub[i] > R){
     coef[i] = R - sub[i];
    }
    else{
     coef[i] = 0;
    }
    sub[i] += coef[i];
    if(i > 0) sub[p[i]] += sub[i];
  }

  ll tot = 0;
  for(int i = 0; i < n; i++){
    tot += w[i] * abs(coef[i]);
  }

  return tot;
}

/*void _(){
	
}

int32_t main(){
  cin.tie(0); ios::sync_with_stdio(0);
  int tc=1;//cin >> tc;
  while(tc--) _();
  return 0;
}*/
#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...