Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "boxes.h"
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const int MaxN = 1e7 + 10;
- long long delivery(int N, int K, int L, int p[]) {
- ll left[MaxN], right[MaxN];
- left[0] = right[0] = 0;
- int i0 = 0;
- for (; p[i0] == 0; i0++) {}
- N -= i0;
- K = min(K, N);
- for (int i = 1; i <= N; i++) {
- left[i] = 2LL * p[i - 1 + i0];
- if (i >= K) left[i] += left[i - K];
- }
- for (int i = 1; i <= N; i++) {
- right[i] = 2LL * (L - p[N - i + i0]);
- if (i >= K) right[i] += right[i - K];
- }
- ll sol = 1e18;
- for (int i = 0; i <= N; i++) {
- sol = min(sol, left[i] + right[N - i]);
- if (N - i >= K) sol = min(sol, left[i] + right[N - i - K] + L);
- }
- return sol;
- }
Add Comment
Please, Sign In to add comment