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 "boxes.h"
#include <vector>
#include <limits>
#include <iostream>
#include <algorithm>
using namespace std;
long long delivery(int n, int k, int l, int p_[]) {
vector<int> p(p_, p_+n);
vector<long long> greedy_l;
greedy_l.push_back(0);
for (int i = 0; i < k; ++i)
greedy_l.push_back(2*p[i]);
for (int i = k; i < n; ++i)
greedy_l.push_back(2*p[i] + greedy_l[i+1-k]);
vector<long long> greedy_r;
greedy_r.push_back(0);
for (int i = 0; i < k; ++i)
greedy_r.push_back(2*(l - p[n-i-1]));
for (int i = k; i < n; ++i)
greedy_r.push_back(2*(l - p[n-i-1]) + greedy_r[i+1-k]);
reverse(greedy_r.begin(), greedy_r.end());
for (int i = 0; i <= n; ++i) {
cout << greedy_l[i] << ' ';
} cout << '\n';
for (int i = 0; i <= n; ++i) {
cout << greedy_r[i] << ' ';
} cout << '\n';
long long best=numeric_limits<long long>::max();
for (int i = 0; i <= n; ++i) {
best=min(best, greedy_l[i] + greedy_r[i]);
}
for (int i = 0; i+k <= n; ++i) {
best = min(best, greedy_l[i] + greedy_r[i+k] + l);
}
if (n <= k)
best = min(best, (long long)l);
return best;
}
# | 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... |