Submission #264800

#TimeUsernameProblemLanguageResultExecution timeMemory
264800shayan_pFireworks (APIO16_fireworks)C++14
7 / 100
3 ms2688 KiB
// only miss the sun when it starts to snow #include<bits/stdc++.h> #define F first #define S second #define PB push_back #define sz(s) int((s).size()) #define bit(n,k) (((n)>>(k))&1) using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const int maxn=1e5+10,mod=1e9+7; const ll inf=1e18; vector<pii> v[maxn]; vector<ll> vec; pll s[maxn]; ll ans; void dfs(int u){ for(pii p:v[u]){ dfs(p.F); s[p.F].F+= p.S; s[p.F].S+= p.S; } vec.clear(); ll num=0; for(pii p:v[u]){ num+= s[p.F].S - s[p.F].F; vec.PB( s[p.F].F ), vec.PB( s[p.F].S ); } sort(vec.begin(), vec.end() ); if(sz(vec)){ int mid=sz(vec)/2; s[u]={ vec[mid-1], vec[mid] }; num = -num; for(ll x:vec){ num+= abs( s[u].F - x ); } ans+= num/2; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(); int n,m; cin>>n>>m; for(int i=1;i<n+m;i++){ int x,y; cin>>x>>y; v[--x].PB({i,y}); } dfs(0); return cout<< ans <<endl,0; } // Deathly mistakes: // * Read the problem carefully. // * Check maxn. // * Overflows. // #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math") // #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...