Guest User

Untitled

a guest
Jun 18th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. #include "boxes.h"
  2.  
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5.  
  6. typedef long long ll;
  7.  
  8. const int MaxN = 1e7 + 10;
  9.  
  10. long long delivery(int N, int K, int L, int p[]) {
  11. ll left[MaxN], right[MaxN];
  12. left[0] = right[0] = 0;
  13.  
  14. int i0 = 0;
  15. for (; p[i0] == 0; i0++) {}
  16. N -= i0;
  17. K = min(K, N);
  18.  
  19. for (int i = 1; i <= N; i++) {
  20. left[i] = 2LL * p[i - 1 + i0];
  21. if (i >= K) left[i] += left[i - K];
  22. }
  23.  
  24. for (int i = 1; i <= N; i++) {
  25. right[i] = 2LL * (L - p[N - i + i0]);
  26. if (i >= K) right[i] += right[i - K];
  27. }
  28.  
  29. ll sol = 1e18;
  30.  
  31. for (int i = 0; i <= N; i++) {
  32. sol = min(sol, left[i] + right[N - i]);
  33. if (N - i >= K) sol = min(sol, left[i] + right[N - i - K] + L);
  34. }
  35.  
  36. return sol;
  37. }
Add Comment
Please, Sign In to add comment