#include "nile.h"
#include <bits/stdc++.h>
using namespace std;
struct Artifact {
int id;
int weight;
int A, B;
int savings;
};
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(), [](const Artifact &a, const Artifact &b) {
return a.weight < b.weight;
});
vector<long long> R(Q);
for (int qi = 0; qi < Q; ++qi) {
int D = E[qi];
vector<bool> used(N, false);
long long total = 0;
int l = 0, r = N - 1;
while (l < r) {
while (l < r && used[l]) l++;
while (l < r && used[r]) r--;
if (l >= r) break;
if (abs(artifacts[l].weight - artifacts[r].weight) <= D) {
total += artifacts[l].B + artifacts[r].B;
used[l] = used[r] = true;
l++;
r--;
} else {
if (artifacts[l].savings > artifacts[r].savings) {
total += artifacts[l].A;
used[l] = true;
l++;
} else {
total += artifacts[r].A;
used[r] = true;
r--;
}
}
}
for (int i = 0; i < N; ++i) {
if (!used[i]) total += artifacts[i].A;
}
R[qi] = total;
}
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... |