#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
long long dist(int x, int L ){
return (x + L) % L;
}
long long delivery(int N, int K, int L, int pos[]) {
sort(pos, pos+N, [&](int a, int b){
return dist(a, L) < dist(b, L);
});
vector<int> p(pos, pos+N);
vector<int> q = p;
reverse(q.begin(), q.end());
vector<long long> l(N+1, 0), r(N+1, 0);
for (int i = 1; i <= N; i++) {
long long d = dist(p[i-1] - 0, L);
if (i <= K) {
l[i] = 2*d;
} else {
l[i] = l[i-K] + 2*d;
}
}
for (int i = 1; i <= N; i++) {
long long d = (L - q[i-1]) % L;
if (i <= K) {
r[i] = 2*d;
} else {
r[i] = r[i-K] + 2*d;
}
}
long long ans = LLONG_MAX;
for (int s = 0; s <= N; s++) {
ans = min(ans, l[s] + r[N-s]);
}
int M = min(K, N);
for (int t = 0; t + M <= N; t++) {
long long cost1 = l[t];
long long cost2 = (long long)L;
long long cost3 = r[N - (t+M)];
ans = min(ans, cost1 + cost2 + cost3);
}
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... |