This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pb push_back
#define ff first
#define ss second
const ll INF = 1e18;
ll n, k, l;
vector <ll> arr;
// []
ll CalcIzq(ll x) {
ll cnt = 0LL, i=1;
for (i=1; k*i-1 < x; i++) {
cnt += arr[i];
// cual es la manera más corta de volver
cnt += min(arr[i], l-arr[i]);
}
cnt += arr[min(k*i-1, x)]; //////////////////// PUEDE TENER UN ERROR
// cual es la manera más corta de volver
cnt += min(arr[min(k*i-1, x)], l - arr[min(k*i-1, x)]);
return cnt;
}
// []
ll CalcDer(ll x) {
ll cnt = 0LL, i=1;
for (i=1; l-k*i > x; i++) {
cnt += l-arr[l-k*i];
// cual es la manera más corta de volver
cnt += min(l-arr[l-k*i], arr[l-k*i]);
}
cnt += l-arr[max(l-k*i, x)]; ///////////////////////// PUEDE TENER UN ERROR
// cual es la manaer más corta de volver
cnt += min(l-arr[max(l-k*i, x)], arr[max(l-k*i, x)]);
return cnt;
}
ll delivery(int N, int K, int L, int p[]) {
// Cambia la entrada
n = (ll)N;
k = (ll)K;
l = (ll)L;
arr.resize(n);
for (int i=0; i<n; i++) arr[i] = (ll)p[i];
ll cnt = INF;
for (ll i=-1; i<n; i++) {
cnt = min(cnt, (i<0 ? 0LL : CalcIzq(i)) + (i==n-1 ? 0LL : CalcDer(i+1)));
}
return cnt;
}
# | 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... |