#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
ll n, q; cin >> n >> q;
vector<ll> h(n + 1); for (ll i = 1; i <= n; i++) cin >> h[i];
vector<ll> y(q + 1); for (ll i = 1; i <= q; i++) cin >> y[i];
vector<pii> a(n + 1); for (ll i = 1; i <= n; i++) a[i] = {h[i], i};
auto f = [](ll n) { return n * (n + 1) / 2; };
sort(a.begin(), a.end());
for (ll i = 1; i <= q; i++) {
ll plane = y[i];
ll target = plane + 1;
ll l = 1, r = n;
ll idx = -1;
while (l <= r) {
ll mid = (l + r) / 2;
if (a[mid].first < target) l = mid + 1;
else {
if (mid == 1) {
idx = mid;
break;
}
if (a[mid - 1].first < target) {
idx = mid;
break;
} else
r = mid;
}
}
if (idx == -1) cout << f(n) << "\n";
else {
vector<ll> b(n + 1, 0);
ll ans = 0;
for (ll j = idx; j <= n; j++)
b[a[j].second] = 1;
ll curr = 0;
for (ll j = 1; j <= n; j++) {
if (b[j] == 0) curr++;
else {
ans += f(curr);
curr = 0;
}
}
ans += f(curr);
cout << ans << "\n";
}
}
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |