This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll delivery(int n, int k, int L, int p[]) {
vector<ll>pref(n,0),suff(n,0);
int cur = k;
ll sum = 0;
sort(p,p+n);
int last = 0;
for(int i=0;i<n;i++){
if(!cur){
pref[i]+=2*sum;
cur = k;
}
cur--;
pref[i]+=p[i] - last;
sum+=p[i] - last;
if(i)pref[i]+=pref[i-1];
last = p[i];
}
last = L;
sum = 0;
cur = k;
for(int i=n-1;i>=0;i--){
if(!cur){
suff[i]+=2*sum;
cur = k;
}
cur--;
suff[i]+=last - p[i];
sum+=last - p[i];
if(i!=n-1)suff[i]+=suff[i+1];
last = p[i];
}
ll ans = 2e18;
//for(int i=0;i<n;i++)cout<<pref[i]<<" ";
//cout<<'\n';
//for(int i=0;i<n;i++)cout<<suff[i]<<" ";
//cout<<'\n';
for(int i=0;i+1<n;i++){
ll cost = pref[i] + suff[i+1] + min(p[i],L-p[i]) + min(p[i+1],L-p[i+1]);
ans = min(ans,cost);
}
ans = min(pref[n-1] + min(p[n-1],L-p[n-1]),ans);
ans = min(suff[0] + min(p[0],L-p[0]),ans);
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |