#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> cost(n, 0);
for(int i=0; i<n; i++){
int j = max(0, i - K + 1);
cost[i] = min({L, 2 * p[i], 2 * (L - p[j])});
// cout << i << " -> " << cost[i] << endl;
}
vector<ll> sum(n, 0);
for(int i=0; i<n; i++){
int j = max(0, i - K + 1);
sum[i] = (j == 0 ? 0 : sum[j - 1]) + cost[i];
}
ll ans = INF;
for(int i=0; i<(K - 1); i++){
// brutando o que passa pelo 0
int j = n - K + i + 1;
ll cur_ans = min(L, 2 * (p[i] + L - p[j]));
int r = (j - i - 1) % K;
cur_ans += sum[j - 1] - sum[i + r];
// cost do [i + 1, i + r]
if(r > 0) cur_ans += min({L, 2 * p[i + r], 2 * (L - p[i + 1])});
// cout << i << " " << j << " -> " << cur_ans << endl;
ans = min(ans, cur_ans);
}
ans = min(ans, sum[n - 1]);
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... |