Submission #1330131

#TimeUsernameProblemLanguageResultExecution timeMemory
1330131edoSafety (NOI18_safety)C++20
100 / 100
41 ms5096 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;


int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int n;
    ll k;
    cin >> n >> k;
    vector<ll> S(n);
    for(ll &i : S) cin >> i;

    priority_queue<ll> L;
    priority_queue<ll, vector<ll>, greater<>> R;
    ll ans = 0, al = 0, ar = 0;

    L.push(S[0]);
    R.push(S[0]);
    
    for(int i = 1; i < n; i++) {
        al -= k;
        ar += k;

        ll x = S[i];
        if(x < L.top() + al) {
            ll t = L.top();
            ans += t + al - x;
            L.pop();
            L.push(x - al);
            L.push(x - al);
            R.push(t + al - ar);
        }
        else if(x > R.top() + ar) {
            ll t = R.top();
            ans += x - t - ar;
            R.pop();
            R.push(x - ar);
            R.push(x - ar);
            L.push(t + ar - al);
        }
        else {
            L.push(x - al);
            R.push(x - ar);
        }
    }
    
    cout << ans;
    return 0;
}
#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...