| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1298399 | the_commando_x | Boxes with souvenirs (IOI15_boxes) | C++17 | 0 ms | 0 KiB |
#include "boxes.h"
#include <bits/stdc++.h>
long long delivery(int N, int K, int L, int p[])
{
long long ans;
int it = std::lower_bound(p, p + N, (L + 1) / 2) - p;
auto get_prf = [&](int i)
{
long long res = 0;
for (; i >= 0; i -= K)
res += 2 * p[i];
return res;
};
auto get_suf = [&](int i)
{
long long res = 0;
for (; i < N; i += K)
res += 2 * (L - p[i]);
return res;
};
long long ans = get_prf(it - 1) + get_suf(it);
for (int i = std::max(0, it - K); i < it; i++)
ans = std::min(ans, (long long)get_prf(i - 1) + L + get_suf(i + K));
return ans;
}
