Untitled
unknown
c_cpp
a year ago
1.5 kB
6
Indexable
#include <bits/stdc++.h> using namespace std; #define ll long long int tt, tc; void solve() { int n, q; cin >> n >> q; vector<ll> a(n); for (ll& u : a) cin >> u; vector<ll> x(q); for (ll& u : x) cin >> u; vector<int> p(q); iota(p.begin(), p.end(), 0); sort(p.begin(), p.end(), [&](int i, int j) { return x[i] < x[j]; }); vector<ll> d(n - 1); vector<pair<ll, int>> all; set<int> invalid; for (int i = 0; i < n - 1; i++) { d[i] = a[i] - a[i + 1]; all.emplace_back(d[i], i); invalid.insert(i); } invalid.insert(-1); invalid.insert(n - 1); auto choose_2 = [&](ll x) { return x * (x - 1) / 2; }; ll ans = 0; sort(all.begin(), all.end()); vector<ll> res(q); int i = 0; for (int j : p) { while (i < n - 1 && all[i].first <= x[j]) { int k = all[i].second; int after = *invalid.upper_bound(k); ans -= choose_2(after - k); int before = *prev(invalid.lower_bound(k)); ans -= choose_2(k - before); ans += choose_2(after - before); invalid.erase(k); i++; } res[j] = ans; } for (ll u : res) { cout << u << ' '; } cout << '\n'; } int main() { ios::sync_with_stdio(0); cin.tie(0); tt = 1, tc = 1; cin >> tt; while (tt--) solve(), tc++; }
Editor is loading...
Leave a Comment