#include <bits/stdc++.h>
#include "boxes.h"
using namespace std;
#define ll long long
#define vb vector<bool>
#define pb push_back
#define ff(aa, bb, cc) for(int aa = bb; aa < cc; aa++)
#define vl vector<ll>
#define pll pair<ll, ll>
#define fi first
#define se second
#define ed "\n"
#define all(aaa) aaa.begin(), aaa.end()
#define rall(aaa) aaa.rbegin(), aaa.rend()
ll MOD = 1e9+7;
long long delivery(int n, int k, int l, int p[]){
vector<int> arr;
bool ok = false;
ff(i, 0, n){
arr.pb(p[i]);
if(p[i] == l/2){
ok = true;
}
}
ll minn = LLONG_MAX;
if(l % 2 == 0 && ok){
//cout << "CASO 1" << ed;
ll le = lower_bound(all(arr), l/2) - arr.begin();
ll ri = upper_bound(all(arr), l/2) - arr.begin();
ll st = max(le-k+1, 0LL);
ll curst = st, curend = st+k-1;
//cout << "LE " << le << " RI " << ri << " CURST" << curst << ed;
while(curst <= ri && curend <= n){
//cout << curst << " -> " << curend << ed;
ll cur = l;
ll s = 0;
for(ll i = curst-1; i >= 0; i -= k){
s += arr[i]*2;
cur += arr[i]*2;
}
//cout << "SUM izq " << s << ed;
s = 0;
for(ll i = curend+1; i < n; i += k){
//cout << (l-arr[i])*2 << " ";
s += ((l-arr[i])*2);
cur += (l-arr[i])*2;
}
//cout << ed;
//cout << "SUM der " << s << ed;
//cout << "FIN " << cur << ed << ed;
minn = min(minn, cur);
curst++;
curend++;
}
}
else{
//cout << "CASO 2" << ed;
ll ri = lower_bound(all(arr), l/2) - arr.begin();
ll curst = max(ri-k+1, 0LL), curend = curst+k-1;
//cout << curst << " " << ri << " " << curend << " " << n << ed;
while(curst <= ri && curend <= n){
//cout << curst << " -> " << curend << ed;
ll cur = l;
ll s = 0;
for(ll i = curst-1; i >= 0; i -= k){
s += arr[i]*2;
cur += arr[i]*2;
}
//cout << "SUM izq " << s << ed;
s = 0;
for(ll i = curend+1; i < n; i += k){
//cout << (l-arr[i])*2 << " ";
s += ((l-arr[i])*2);
cur += (l-arr[i])*2;
}
//cout << ed;
//cout << "SUM der " << s << ed;
//cout << "FIN " << cur << ed << ed;
minn = min(minn, cur);
curst++;
curend++;
}
}
ll id = -1;
//cout << "NO CIRCLE" << ed;
while(id < n){
//cout << "ID " << id << ed;
ll cur = 0;
ll s = 0;
for(ll i = id; i >= 0; i -= k){
//cout << arr[i]*2 << " ";
s += arr[i]*2;
cur += arr[i]*2;
}
//cout << ed;
//cout << "SUM izq " << s << ed;
s = 0;
for(ll i = id+1; i < n; i += k){
//cout << (l-arr[i])*2 << " ";
s += (l-arr[i])*2;
cur += (l-arr[i])*2;
}
//cout << ed;
//cout << "SUM der " << s << ed;
//cout << "FIN " << cur << ed << ed;
minn = min(minn, cur);
id++;
}
return minn;
}
/*
int main() {
int N, K, L;
cin >> N >> K >> L;
int p[N];
ff(i, 0, N){
cin >> p[i];
}
long long ans = delivery(N, K, L, p);
cout << ans << ed;
return 0;
}
*/
# | 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... |