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 <bits/stdc++.h>
using namespace std;
#define ll long long
const int nx=1e3+5;
ll dpl[nx][nx], dpr[nx][nx], mnl[nx], mnr[nx], res=LLONG_MAX;
long long delivery(int N, int K, int L, int p[]) {
vector<ll> v(N+2);
for (int i=0; i<N; i++) v[i+1]=p[i];
v[N+1]=L;
sort(v.begin(), v.end());
for (int i=1; i<=N; i++) mnr[i]=mnl[i]=LLONG_MAX;
for (int i=1; i<=N; i++)
{
for (int j=0; j+1<K; j++) dpr[i][j]=dpr[i-1][j+1]+v[i]-v[i-1];
dpr[i][K-1]=mnr[i-1]+v[i];
for (int j=0; j<K; j++) mnr[i]=min(mnr[i], dpr[i][j]+min(v[i], L-v[i]));
}
for (int i=N; i>=1; i--)
{
for (int j=0; j+1<K; j++) dpl[i][j]=dpl[i+1][j+1]+v[i+1]-v[i];
dpl[i][K-1]=mnl[i+1]+L-v[i];
//cout<<"here "<<i<<' ';
//for (int j=0; j<K; j++) cout<<dpl[i][j]<<' ';
//cout<<'\n';
for (int j=0; j<K; j++) mnl[i]=min(mnl[i], dpl[i][j]+min(v[i], L-v[i]));
}
for (int i=0; i<=N; i++) res=min(res, mnr[i]+mnl[i+1]);
//for (int i=1; i<=N; i++) cout<<i<<' '<<mnl[i]<<' '<<mnr[i]<<'\n';
return res;
}
# | 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... |