#include <algorithm>
#include <cmath>
#include <iostream>
#include <vector>
typedef long long ll;
using namespace std;
ll solve(vector<pair<ll, ll>> &items, vector<ll> &w, ll d) {
ll n = items.size();
vector<bool> ok(n, false);
ll res = 0;
for (int i = 0; i < n; ++i) {
int l = i + 1;
int r = upper_bound(w.begin(), w.end(), w[i] + d) - w.begin() - 1;
bool found = false;
ll mx = 0, idx = i;
for (int j = l; j <= r; ++j) {
if (ok[j]) continue;
found = true;
if (items[j].second > mx) {
mx = items[j].second;
idx = j;
}
}
if (!found) {
res += items[i].second;
ok[i] = true;
} else {
ok[i] = true;
ok[idx] = true;
}
}
return res;
}
vector<ll> calculate_costs(vector<int> W, vector<int> a, vector<int> b, vector<int> e) {
ll n = a.size();
ll q = e.size();
vector<ll> ans(q), w(n);
vector<pair<ll, ll>> items(n);
ll sum = 0;
for (ll i = 0; i < n; ++i) {
items[i] = {(ll)W[i], (ll)(a[i] - b[i])};
sum += b[i];
}
sort(items.begin(), items.end());
for (ll i = 0; i < n; ++i) {
w[i] = items[i].first;
}
for (int i = 0; i < q; ++i) ans[i] = sum + solve(items, w, e[i]);
return ans;
}
# | 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... |