#include "nile.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
using vi = vector<int>;
// input
// W[i] = weight of artifact i
// A[i] = cost of transporting artifact i by itself
// B[i] = cost of transporting artifact i with another artifact
// E[j] = maximum weight different for artifacts going together for query j
// output
// R[i] = min cost of transporting all artifacts, when D = R[j]
vector<ll> calculate_costs(vi W, vi A, vi B, vi E) {
int N = W.size(), Q = E.size();
vector<ll> R(Q, 0);
vector<int> indices(N); iota(indices.begin(), indices.end(), 0);
sort(indices.begin(), indices.end(), [&](const auto &a, const auto &b) {
return W[a] <= W[b];
});
// reverse(indices.begin(), indices.end());
for (int j = 0; j < Q; j++) {
vector<int> cur = indices;
ll cost = 0;
ll pairs = 0;
ll single = 0;
for (int i = 0; i < N; i++) {
if (i < N - 1 && abs(W[cur[i + 1]] - W[cur[i]]) <= E[j]) {
pairs++;
i++;
} else {
single++;
}
}
R[j] = 2 * pairs + 2 * single;
}
return R;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |