Submission #1025465

#TimeUsernameProblemLanguageResultExecution timeMemory
1025465sopaconkFireworks (APIO16_fireworks)C++17
100 / 100
172 ms73300 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back using lli=long long int; #define deb(x) cout<<#x<<": "<<x<<endl; // #define endl '\n' void dfs(lli x, lli d, vector<vector<pair<lli,lli>>> &sons, priority_queue<lli> &pq){ // deb(x); for(auto y: sons[x]){ // deb(y.first); priority_queue<lli> aux; dfs(y.first,y.second,sons, aux); if(aux.size() >pq.size()){ swap(aux, pq); } while(!aux.empty()){ pq.push(aux.top()); aux.pop(); } } if(pq.empty()){ pq.push(0); pq.push(0); // deb(pq.size()); } for(lli i=0; i<((lli) sons[x].size())-1; ++i){ // deb(i); pq.pop(); } lli a=pq.top(); pq.pop(); lli b=pq.top(); pq.pop(); // deb(a); // deb(b); a+=d; b+=d; pq.push(a); pq.push(b); } void solve(){ lli n,m; cin>>n>>m; vector<vector<pair<lli,lli>>> sons (n+m+1); lli sum=0; for(lli i=2; i<=n+m; ++i){ lli p, c; cin>>p>>c; sum+=c; sons[p].pb({i,c}); } priority_queue<lli> ans; dfs(1,0,sons,ans); lli val=sum; lli pend=1-ans.size(); lli ant=0; stack<lli> v; while(!ans.empty()){ v.push(ans.top()); ans.pop(); } while(!v.empty()){ sum+=pend*(v.top()-ant); val=min(val, sum); pend++; ant=v.top(); v.pop(); } cout<<val<<endl; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); lli t=1; // cin>>t; while(t--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...