#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll delivery(int n, int k, int l, int* positions)
{
vector<ll> pos;
for(int i=0;i<n;i++)
{
pos.push_back(positions[i]);
}
sort(pos.begin(),pos.end());
vector<ll> dpleft(n+1,0);
vector<ll> dpright(n+1,0);
ll j;
for(int i=0;i<n;i++)
{
dpleft[i+1]=dpleft[max(0,i-k+1)]+pos[i]*2;
}
for(int i=0;i<n;i++)
{
dpright[n-i-1]=dpright[min(n,n-i-1+k)]+(l-pos[n-i-1])*2;
}
ll ans_no_full_trip;
ans_no_full_trip=LONG_LONG_MAX;
for(int i=0;i<=n;i++)
{
ans_no_full_trip=min(ans_no_full_trip,dpleft[i]+dpright[i]);
}
ll ans_one_full_trip;
ans_one_full_trip=LONG_LONG_MAX;
for(int i=0;i<=n-k;i++)
{
ans_one_full_trip=min(ans_one_full_trip,dpleft[i]+dpright[i+k]+l);
}
return min(ans_no_full_trip,ans_one_full_trip);
}
/*
int main()
{
int n,k,l,owo;
int positions[100000];
cin >> n >> k >> l;
for(ll i=0;i<n;i++)
{
cin >> owo;
positions[i]=owo;
}
cout << delivery(n,k,l,positions) << endl;
}
*/
# | 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... |