#include <iostream>
#include <vector>
#include <algorithm>
#include "boxes.h"
using namespace std;
long long delivery(int n, int k, int l, int p[]){
vector<int> vec;
for (int i=0;i<n;i++)
if (p[i])
vec.push_back(p[i]);
sort(begin(vec), end(vec));
long long Ans = 0, hf = l / 2;
while (vec.size() >= k and vec[vec.size() - k] >= l - hf){
Ans += 2 * l - 2 * vec[vec.size() - k];
for (int i=0;i<k;i++)
vec.pop_back();
}
reverse(begin(vec), end(vec));
while (vec.size() >= k and vec[vec.size() - k] <= hf){
Ans += 2 * vec[vec.size() - k];
for (int i=0;i<k;i++)
vec.pop_back();
}
reverse(begin(vec), end(vec));
if (vec.size() == 0)
return Ans;
if (vec.size() <= k)
return Ans + min(l, min(vec.back() * 2, l + l - 2 * vec[0]));
return Ans + l + min(vec[vec.size() - k - 1] * 2, (l - vec[k]) * 2);
}
# | 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... |