Submission #99947

#TimeUsernameProblemLanguageResultExecution timeMemory
99947TadijaSebezFireworks (APIO16_fireworks)C++11
7 / 100
9 ms7552 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back const int N=300050; int par[N],len[N]; ll dep[N],dp[N],sz[N]; vector<int> E[N]; void DFS(int u) { if(E[u].size()==0) return; vector<ll> work; for(int v:E[u]) { DFS(v); dp[u]+=dp[v]; work.pb(sz[v]+len[v]); } sort(work.begin(),work.end()); if(work.size()&1) { int mid=(work.size()+1)/2; sz[u]=work[mid-1]; for(ll p:work) dp[u]+=abs(sz[u]-p); } else { int mid=work.size()/2; ll a=0,b=0; for(ll p:work) a+=abs(work[mid-1]-p); for(ll p:work) b+=abs(work[mid]-p); if(a<=b) sz[u]=work[mid-1],dp[u]+=a; else sz[u]=work[mid],dp[u]+=b; } //printf("u:%i dp:%lld sz:%lld\n",u,dp[u],sz[u]); } int main() { int n,m; scanf("%i %i",&n,&m); n+=m; for(int i=2;i<=n;i++) { scanf("%i %i",&par[i],&len[i]); dep[i]=dep[par[i]]+len[i]; E[par[i]].pb(i); } DFS(1); printf("%lld\n",dp[1]); return 0; }

Compilation message (stderr)

fireworks.cpp: In function 'int main()':
fireworks.cpp:40:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%i %i",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~
fireworks.cpp:44:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%i %i",&par[i],&len[i]);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...