#include <bits/stdc++.h>
#include "nile.h"
using namespace std;
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<array<int, 2>> qs(q);
for (int i = 0; i < q; i++) {
qs[i] = {e[i], i};
}
vector<array<int, 3>> to_sort;
for (int i = 0; i < n; i++) {
to_sort.push_back({w[i], a[i], b[i]});
}
sort(to_sort.begin(), to_sort.end());
for (int i = 0; i < n; i++) {
w[i] = to_sort[i][0];
a[i] = to_sort[i][1];
b[i] = to_sort[i][2];
}
vector<array<int, 2>> diff;
for (int i = 1; i < n; i++) {
diff.push_back({w[i] - w[i - 1], i});
}
sort(diff.rbegin(), diff.rend());
int j = 0, cur = n + (n & 1);
sort(qs.rbegin(), qs.rend());
vector<long long> ret(q);
set<int> l, r;
l.insert(0);
r.insert(n - 1);
for (auto [d, pos] : qs) {
while (j < n - 1 && diff[j][0] > d) {
int k = diff[j][1];
auto tl = --l.upper_bound(k);
auto tr = r.lower_bound(*tl);
if ((*tr - *tl + 1) & 1) cur--;
if ((k - *tl) & 1) cur++;
if ((*tr - k + 1) & 1) cur++;
l.insert(k);
r.insert(k - 1);
j++;
}
ret[pos] = cur;
}
return ret;
}
| # | 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... |