| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1368062 | Almonther | Tree (IOI24_tree) | C++20 | 2096 ms | 18568 KiB |
#include<bits/stdc++.h>
using namespace std;
#define ll long long
vector<int>par,wei;
ll n;
void init(std::vector<int> P, std::vector<int> W){
par=P,wei=W;
n=par.size();
}
long long query(int L, int R){
vector<ll>val(n+5,0);
multiset<array<ll,2>>vals[n+5];
ll ans=0;
for(int i=n-1;i>=0;i--){
ll x=val[i];
if(x>R){
while(x>R){
if(vals[i].size()){
auto[cost,num]=*vals[i].begin();
if(cost<=wei[i]){
vals[i].erase(vals[i].begin());
if(num>=x-R){
ans+=(x-R)*cost,num-=x-R,x=R;
if(num) vals[i].insert({cost,num});
}
else x-=num,ans+=num*cost;
}
else ans+=(x-R)*wei[i],val[i]=R;
}
else ans+=(x-R)*wei[i];
}
val[i]=R;
}
else if(x<L) ans+=(L-x)*wei[i],val[i]=L;
ll diff=x-L;
if(i){
vector<array<ll,2>>del;
for(auto [weei,no]:vals[i]){
if(weei>wei[i]||diff<=0) del.push_back({weei,no});
else diff-=no;
}
for(auto j:del) vals[i].erase(j);
if(diff<=0&&vals[i].size()){
array<ll,2>a=*vals[i].rbegin();
vals[i].extract(a);
a[1]+=diff;
vals[i].insert(a);
}
else vals[i].insert({wei[i],diff});
if(vals[i].size()>vals[par[i]].size()) swap(vals[i],vals[par[i]]);
for(auto j:vals[i]) vals[par[i]].insert(j);
vals[i].clear();
val[par[i]]+=val[i];
}
}
return ans;
}
// int main(){
// init({-1, 0, 0}, {1, 1, 1});
// cout<<query(1, 1)<<' '<<query(1, 2)<<'\n';
// }| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
