# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
294363 | peti1234 | Boxes with souvenirs (IOI15_boxes) | C++17 | 0 ms | 0 KiB |
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 <bits/stdc++.h>
using namespace std;
const int c=10000002;
vector<int> a, b;
long long as, bs, ka[c], kb[c], mini=1e18;
long long delivery(int n, int k, int l, vector<int> sz) {
for (int i=0; i<n; i++) {
int x=sz[i];
if (2*x<l) a.push_back(x);
else b.push_back(l-x);
}
sort(a.begin(), a.end()), sort(b.begin(), b.end()), as=a.size(), bs=b.size();
for (int i=0; i<as; i++) {
ka[i]=2*a[i];
if (i>k) ka[i]+=ka[i-k];
}
for (int i=0; i<bs; i++) {
kb[i]=2*b[i];
if (i>k) kb[i]+=kb[i-k];
}
if (!as) return kb[bs-1];
if (!bs) return ka[as-1];
if (n<k) mini=l;
mini=ka[as-1]+kb[bs-1];
for (int i=0; i<k; i++) if (as>i && bs>k-i) mini=min(mini, l+ka[as-1-i]+kb[bs-1-k+i]);
return mini;
}