#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++) {
cout << "D = " << E[j] << "\n";
vector<int> cur = indices;
ll cost = 0;
while (cur.size() > 1) {
int top = cur.back();
cur.pop_back();
if (abs(W[top] - W[cur.back()]) <= E[j]) {
cost += B[top] + B[cur.back()];
cout << "Combine item " << top << " and item " << cur.back() << " for a cost of " << B[top] + B[cur.back()] << "\n";
cur.pop_back();
} else {
cout << "Use item " << top << " by itself, costing " << A[top] << "\n";
cost += A[top];
}
}
if (cur.size() == 1) {
cout << "Use item " << cur.back() << " by itself, costing " << A[cur.back()] << "\n";
cost += A[cur.back()];
}
cout << "Total cost is: " << cost << "\n";
R[j] = cost;
}
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... |