#include <bits/stdc++.h>
#include "boxes.h"
using ll = long long;
using namespace std;
const ll INF = 1e18;
ll delivery(int n, int K, int L, int p[]){
vector<ll> pref(n + 1, 0), suf(n + 1, 0);
for(int i=0; i<n; i++){
int j = max(0, i - K + 1);
if(j > 0) pref[i] = pref[j - 1];
pref[i] += min({L, 2 * p[i], 2 * (L - p[j])});
}
for(int i=(n - 1); i>=0; i--){
int j = min(n - 1, i + K - 1);
if(j < n - 1) suf[i] = suf[j + 1];
suf[i] += min({L, 2 * p[j], 2 * (L - p[i])});
}
ll ans = INF;
// na verdade, o 0 nao importa
// bruta o que vai ser diferente
for(int i=0; i<n; i++){
int j = min(n - 1, i + K - 1);
ll cur_ans = min({L, 2 * p[j], 2 * (L - p[i])});
if(i > 0) cur_ans += pref[i - 1];
if(j < n - 1) cur_ans += suf[j + 1];
ans = min(ans, cur_ans);
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |