Submission #169885

#TimeUsernameProblemLanguageResultExecution timeMemory
169885AlexLuchianovBoxes with souvenirs (IOI15_boxes)C++14
10 / 100
10 ms504 KiB
#include "boxes.h"

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] = p[i];
    else
      pref[i] = pref[i - K] + p[i];
  for(int i = N - 1; 0 <= i; i--)
    if(i + K < N)
      suff[i] = suff[i + K] + (L - p[i]);
    else
      suff[i] = (L - p[i]);

  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 2 * 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...