Submission #1060363

#TimeUsernameProblemLanguageResultExecution timeMemory
1060363idasSafety (NOI18_safety)C++17
100 / 100
38 ms7036 KiB
#include "bits/stdc++.h"
#define FAST_IO ios_base::sync_with_stdio(false); cin.tie(nullptr)
#define FOR(i, begin, end) for(int i=(begin); i<(end); i++)
#define sz(x) ((int)(x).size())
#define pb push_back
#define s second
#define f first

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;

const int N=2e5+10;
ll n, h, a[N];
priority_queue<ll> l;
priority_queue<ll, vector<ll>, greater<ll>> r;

int main() {
    FAST_IO;
    cin >> n >> h;
    FOR(i, 0, n) cin >> a[i];
    l.push(a[0]); r.push(a[0]);
    ll add=h, ans=0;
    FOR(i, 1, n) {
        if(a[i]>r.top()+add) {
            ll tp=r.top(); r.pop();
            tp+=add;
            ans+=a[i]-tp;
            tp+=add;
            l.push(tp);
            r.push(a[i]-add);
            r.push(a[i]-add);
        }
        else if(a[i]<l.top()-add) {
            ll tp=l.top(); l.pop();
            tp-=add;
            ans+=tp-a[i];
            tp-=add;
            r.push(tp);
            l.push(a[i]+add);
            l.push(a[i]+add);
        }
        else {
            l.push(a[i]+add);
            r.push(a[i]-add);
        }
        add+=h;
    }
    cout << ans;
}
/*
2 1
3 7

4 1
4 3 2 1
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...