#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5 + 10;
ll n, h, ans, lzl, lzr, a[N];
priority_queue<ll> pql;
priority_queue<ll, vector<ll>, greater<ll>> pqr;
int main() {
cin.tie(nullptr)->ios_base::sync_with_stdio(false);
cin >> n >> h;
for (int i = 1; i <= n; i++) cin >> a[i];
pql.push(a[1]);
pqr.push(a[1]);
for (int i = 2; i <= n; i++) {
lzl += h;
lzr += h;
if (a[i] < pql.top() - lzl) {
ll x = pql.top(); pql.pop();
ans += x - lzl - a[i];
pqr.push(x - lzl - lzr);
pql.push(a[i] + lzl);
pql.push(a[i] + lzl);
}
else if (a[i] > pqr.top() + lzr) {
ll x = pqr.top(); pqr.pop();
ans += a[i] - x - lzr;
pql.push(x + lzl + lzr);
pqr.push(a[i] - lzr);
pqr.push(a[i] - lzr);
}
else {
pql.push(a[i] + lzl);
pqr.push(a[i] - lzr);
}
}
cout << 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |