Submission #673458

#TimeUsernameProblemLanguageResultExecution timeMemory
673458S2speedFireworks (APIO16_fireworks)C++17
26 / 100
19 ms2004 KiB
#include<bits/stdc++.h> using namespace std; #pragma GCC optimize ("Ofast") #define all(x) x.begin() , x.end() #define sze(x) (ll)(x.size()) typedef long long ll; typedef pair<ll , ll> pll; const ll maxn = 312 , md = 1e9 + 7 , inf = 2e16; ll n , m; vector<ll> v; void sub1(){ for(ll i = 0 ; i < m ; i++){ ll w; cin>>w>>w; v.push_back(w); } sort(all(v)); ll f = v[m / 2] , ans = 0; for(ll i = 0 ; i < m ; i++){ ans += abs(v[i] - f); } cout<<ans<<'\n'; return; } vector<pll> adj[maxn]; ll dp[maxn][maxn]; void dDFS(ll r){ if(r >= n){ dp[r][0] = 0; return; } for(auto p : adj[r]){ ll i = p.first; dDFS(i); } for(ll j = 0 ; j <= 300 ; j++){ ll res = 0; for(auto p : adj[r]){ ll i = p.first , w = p.second , h = inf; for(ll k = 0 ; k <= j ; k++){ ll t = j - k; h = min(h , dp[i][k] + abs(t - w)); } res += h; } dp[r][j] = res; } return; } void sub2(){ memset(dp , 63 , sizeof(dp)); for(ll i = 1 ; i < n + m ; i++){ ll p , w; cin>>p>>w; p--; adj[p].push_back({i , w}); } dDFS(0); ll ans = inf; for(ll j = 0 ; j <= 300 ; j++){ ans = min(ans , dp[0][j]); } cout<<ans<<'\n'; return; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>m; if(n == 1){ sub1(); return 0; } sub2(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...