Submission #219788

#TimeUsernameProblemLanguageResultExecution timeMemory
219788NightlightBoxes with souvenirs (IOI15_boxes)C++14
10 / 100
5 ms384 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;

long long dpL[10000005], dpR[10000005];

long long delivery(int N, int K, int L, int p[]) {
  for(int i = 1; i <= N; i++) {
    dpL[i] = ((long long) p[i - 1]) << 1LL;
    if(i > K) dpL[i] += dpL[i - K];
  }
  for(int i = N; i > 0; i--) {
    dpR[i] = ((long long) L - p[i - 1]) << 1LL;
    if(N - i > K) dpR[i] += dpR[i + K]; 
  }
  long long ans = 1e18;
  for(int i = 0; i <= N; i++) {
    ans = min(ans, dpL[i] + dpR[i + 1]);
  }
  long long res;
  for(long long j = 1; j <= N / K; j++) {
    res = 1e18;
    for(int i = K * j; i <= N; i++) {
      res = min(res, dpL[i - K * j] + dpR[i + 1] + j * L);
    }
    if(res >= ans) return ans;
    else ans = res;
  }
  return ans;
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:23:19: warning: conversion to 'int' from 'long long int' may alter its value [-Wconversion]
     for(int i = K * j; i <= N; i++) {
                 ~~^~~
#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...