#include "nile.h"
#include <bits/stdc++.h>
using namespace std;
struct Artifact {
int id;
int weight;
int cost_alone;
int cost_pair;
int savings;
};
bool compare_artifacts(const Artifact& a, const Artifact& b) {
if (a.savings != b.savings) {
return a.savings > b.savings;
} else {
return a.weight < b.weight;
}
}
vector<long long> calculate_costs(vector<int> W, vector<int> A, vector<int> B, vector<int> E) {
int N = W.size();
int Q = E.size();
vector<Artifact> artifacts(N);
for (int i = 0; i < N; i++) {
artifacts[i] = {i, W[i], A[i], B[i], A[i] - B[i]};
}
sort(artifacts.begin(), artifacts.end(), compare_artifacts);
vector<long long> R(Q);
for (int q = 0; q < Q; q++) {
int D = E[q];
vector<bool> used(N, false);
long long total_cost = 0;
for (int i = 0; i < N; i++) {
if (used[i]) continue;
int best_match = -1;
for (int j = i + 1; j < N; j++) {
if (used[j]) continue;
if (abs(artifacts[i].weight - artifacts[j].weight) <= D) {
best_match = j;
break;
}
}
if (best_match != -1) {
total_cost += artifacts[i].cost_pair + artifacts[best_match].cost_pair;
used[i] = true;
used[best_match] = true;
} else {
total_cost += artifacts[i].cost_alone;
used[i] = true;
}
}
R[q] = total_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... |