Submission #1347695

#TimeUsernameProblemLanguageResultExecution timeMemory
1347695sdkjflkjsldkfjTree (IOI24_tree)C++20
In queue
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
#define endl '\n'
#define pb push_back
#define ff first
#define ss second
#define all(a) a.begin(),a.end()

const int maxN=2e5+15;
vector<vector<int>>g(maxN);
vector<int> w(maxN);
vector<int> s(maxN);
int n;

void init(vector<int>P,vector<int>W){
    int n=P.size();
    for(int i=1;i<n;i++) g[P[i]].pb(i);
    for(int i=0;i<n;i++) if(g[i].empty()) s[i]=1;
    for(int i=n-1;i>0;i--) s[P[i]]+=s[i];
}

ll query(int l,int r){
    ll ans=(ll)(l*s[0])+max(0ll,(ll)((l*s[0])-r));
    return ans;
}