Submission #1363200

#TimeUsernameProblemLanguageResultExecution timeMemory
1363200m5588ohammedSafety (NOI18_safety)C++20
5 / 100
153 ms20052 KiB
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define mod 1000000007
#define int long long
int n,arr[500001];
int Linf=-1e9-5,Rinf=1e9+5;
multiset <int> L,R;
int mn=0,shL=0,shR=0,h;

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    cin>>n>>h;
    L.insert(Linf);
    R.insert(Rinf);
    for(int i=0;i<n;i++){
        cin>>arr[i];
        shL-=h;shR+=h;
        if(arr[i]<*L.rbegin()+shL){
            mn+=*L.rbegin()+shL-arr[i];
            R.insert(*L.rbegin());
            L.extract(*L.rbegin());
            L.insert(arr[i]-shL); 
            L.insert(arr[i]-shL); 
        }
        else if(arr[i]>*R.begin()+shR){
            mn+=arr[i]-(*R.begin()+shR);
            L.insert(*R.begin());
            R.extract(*R.begin());
            R.insert(arr[i]-shR); 
            R.insert(arr[i]-shR); 
        }
        else{
            L.insert(arr[i]-shL);
            R.insert(arr[i]-shR);      
        }
    }
    cout<<mn<<endl;

    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...