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"
#include "boxes.h"
using namespace std;
long long delivery(int n, int k, int l, int p[]){
long long answer = 0;
if(k == 1){
for(int i = 0; i < n; ++i)
answer += (min(p[i], l - p[i]) << 1LL);
return answer;
}
if(k == n){
vector<int> v, v2;
for(int i = 0; i < n; ++i){
if(p[i] < (l >> 1))
v.push_back(p[i]);
else
v2.push_back(p[i]);
}
sort(v.begin(), v.end());
sort(v2.begin(), v2.end());
int ad = 0, ad2 = 0;
if(v.size())
ad = v.back();
if(v2.size())
ad2 = l - v2.front();
answer = min(l*1LL, ((ad << 1LL) + (ad2 << 1LL))*1LL);
return answer;
}
answer = LLONG_MAX;
for(int mk = 0; mk < (1 << n); ++mk){
vector<int> v, v2;
for(int i = 0; i < n; ++i){
if(mk >> i & 1)
v.push_back(p[i]);
else
v2.push_back(l - p[i]);
}
long long id = 0;
sort(v.begin(), v.end());
sort(v2.begin(), v2.end());
for(int i = (int)v.size() - 1; i >= 0; i -= k)
id += (min((v[i] << 1LL), l));
for(int i = (int)v2.size() - 1; i >= 0; i -= k)
id += (min((v2[i] << 1LL), l));
answer = min(answer, id);
}
return answer;
}
# | 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... |