Submission #1212225

#TimeUsernameProblemLanguageResultExecution timeMemory
1212225kunzaZa183Boxes with souvenirs (IOI15_boxes)C++20
100 / 100
350 ms196096 KiB
#include "boxes.h"

#include <bits/stdc++.h>
using namespace std;

long long delivery(int N, int K, int L, int p[]) {
  vector<long long> left(N), right(N);
  for (int i = 0; i < N; i++) {
    if (i < K) {
      left[i] = 2ll * p[i];
    } else {
      left[i] = 2ll * p[i] + left[i - K];
    }
  }

  for (int i = N - 1; i >= 0; i--) {
    if (i + K >= N) {
      right[i] = 2ll * (L - p[i]);
    } else {
      right[i] = 2ll * (L - p[i]) + right[i + K];
    }
  }

  long long ans = LLONG_MAX;
  ans = min(left[N - 1], right[0]);
  for (int i = 0; i + 1 < N; i++) ans = min(ans, left[i] + right[i + 1]);

  if (N == K) {
    ans = min(ans, (long long)L);
  } else if (N > K) {
    ans = min({ans, L + right[K], L + left[N - K - 1]});
    for (int i = 0; i + K + 1 < N; i++)
      ans = min(ans, L + left[i] + right[i + K + 1]);
  }

  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...