Submission #264811

#TimeUsernameProblemLanguageResultExecution timeMemory
264811shayan_pFireworks (APIO16_fireworks)C++14
7 / 100
6 ms7424 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=3e5+10,mod=1e9+7; const ll inf=1e18; vector<pii> v[maxn]; vector<ll> vec; pll s[maxn]; ll ans; int n, m; bool good[maxn]; void dfs(int u){ good[u]|= u >= n; for(pii p:v[u]){ dfs(p.F); if(good[p.F]){ good[u] = 1; s[p.F].F+= p.S; s[p.F].S+= p.S; } } if(good[u] == 0) return; vec.clear(); ll num=0; for(pii p:v[u]){ if(good[p.F]){ 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] }; for(ll x:vec) num+= abs( s[u].F - x ); assert(num % 2 == 0); ans+= num/2; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(); 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...