Submission #169886

#TimeUsernameProblemLanguageResultExecution timeMemory
169886AlexLuchianovBoxes with souvenirs (IOI15_boxes)C++14
100 / 100
604 ms294136 KiB
#include "boxes.h"
#include <iostream>

using ll = long long;
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
#define MAX(a, b) (((a) < (b)) ? (b) : (a))

int const nmax = 10000000;
ll const inf = 1000000000000000000LL;

ll pref[1 + nmax], suff[1 + nmax];

long long delivery(int N, int K, int L, int p[]) {
  for(int i = 0; i < N; i++)
    if(i < K)
      pref[i] = MIN(2 * p[i], L);
    else
      pref[i] = pref[i - K] + MIN(2 * p[i], L);
  for(int i = N - 1; 0 <= i; i--)
    if(i + K < N)
      suff[i] = suff[i + K] + MIN(2 * (L - p[i]), L);
    else
      suff[i] = MIN(2 * (L - p[i]), L);

  ll result = inf;


  for(int i = 0; i <= N; i++) {
    ll cost = 0;
    if(0 < i) {
      cost += pref[i - 1];
    }
    if(i < N)
      cost += suff[i];

    if(cost < result)
      result = cost;
  }
  return result;
}
#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...