Submission #44154

#TimeUsernameProblemLanguageResultExecution timeMemory
44154faustaadpFireworks (APIO16_fireworks)C++17
19 / 100
148 ms1636 KiB
#include<bits/stdc++.h> #define ll long long #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; ll n,m,i,ta,a[202020],has,d[330][330]; vector<ll> v[330],w[330]; ll depe(ll aa,ll bb) { if(v[aa].size()==0) return bb; if(d[aa][bb]==-1) { d[aa][bb]=0; ll ii,jj; for(jj=0;jj<v[aa].size();jj++) { ll hh=1e18; for(ii=0;ii<=bb;ii++) hh=min(hh,depe(v[aa][jj],ii)+abs(w[aa][jj]-(bb-ii))); d[aa][bb]+=hh; } } return d[aa][bb]; } ll hey(ll aa) { ll ii,h=0; for(ii=2;ii<=n+m;ii++) h+=abs(a[ii]-aa); return h; } int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>m; for(i=2;i<=n+m;i++) { cin>>ta>>a[i]; v[ta].pb(i); w[ta].pb(a[i]); } has=1e18; if(n+m<=300) { memset(d,-1,sizeof(d)); for(i=0;i<=300;i++) has=min(has,depe(1,i)); //cout<<depe(4,3)<<"\n"; //cout<<depe(1,14)<<"\n"; cout<<has<<"\n"; } else { ll L=0,R=1e9,C1,C2,CC1,CC2; while(L<=R) { C1=L+(R-L)/3; C2=R-(R-L)/3; CC1=hey(C1); CC2=hey(C2); if(CC1<CC2) R=C2-1; else L=C1+1; has=min(has,min(CC1,CC2)); } cout<<has<<"\n"; } }

Compilation message (stderr)

fireworks.cpp: In function 'long long int depe(long long int, long long int)':
fireworks.cpp:18:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(jj=0;jj<v[aa].size();jj++) 
            ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...