Submission #228627

#TimeUsernameProblemLanguageResultExecution timeMemory
228627cfalasBoxes with souvenirs (IOI15_boxes)C++14
100 / 100
871 ms294032 KiB
#include<bits/stdc++.h> using namespace std; #include "boxes.h" #define ll long long long long delivery(int N, int K, int L, int p[]) { sort(p, p+N); if(K==1){ ll ans=0; for(int i=0;i<N;i++){ ans+=2*min(p[i],L-p[i]); } return ans; } ll minCW[N+1] = {}; ll minCCW[N+1] = {}; //int cntCW[N+1] = {}; minCW[1] = 2*p[0]; for(int i=2;i<=N;i++){ if(i>K) minCW[i] = minCW[i-K] + 2*p[i-1]; else minCW[i] = minCW[i-1] + 2*(p[i-1]-p[i-2]); //cout<<minCW[i]<<" "; } //cout<<endl; minCCW[1] = 2*(L-p[N-1]); for(int i=2;i<=N;i++){ if(i>K) minCCW[i] = minCCW[i-K] + 2*(L-p[N - i]); else minCCW[i] = minCCW[i-1] + 2*(-p[N-i]+p[N-i+1]); //cout<<minCCW[i]<<" "; } ll mina = (N+K-1)/K * (ll)L; //cout<<endl; //cout<<mina<<endl; for(int i=0;i<=N;i++){ //cout<<i<<" "<<minCW[i] + minCCW[N-i]<<endl; mina = min(mina, minCW[i] + minCCW[N-i]); if(i+K<=N){ //cout<<"a "<<minCW[i] + L + minCCW[N-K-i]<<endl; mina = min(mina, minCW[i] + L + minCCW[N-K-i]); } } //cout<<endl; //cout<<mina<<endl; return mina; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...