제출 #1363284

#제출 시각아이디문제언어결과실행 시간메모리
1363284AlmontherSafety (NOI18_safety)C++20
9 / 100
118 ms18564 KiB
#include<bits/stdc++.h>

using namespace std;

#define ll long long
multiset<ll>lef,rig;
ll mn=0,lsh=0,rsh=0;
// void torig(ll x){
//     if(x<=*lef.rbegin()){
//         mn+=*lef.rbegin()-x;
//         lef.extract(*lef.rbegin());
//         lef.insert(x);
//     }
//     else rig.insert(x);
// }
// void tolef(ll x){
//     if(x>=*rig.begin()){
//         mn+=x-*rig.begin();
//         rig.extract(*rig.begin());
//         rig.insert(x);
//     }
//     else lef.insert(x);
// }
void add(ll x){
    ll a=*rig.begin()+rsh,b=*lef.rbegin()+lsh;
    if(x>=a){
        mn+=x-a;
        lef.insert(a-lsh);
        rig.extract(a);
        rig.insert(x-rsh);
        rig.insert(x-rsh);
    }
    else if(x<=b){
        mn+=b-x;
        rig.insert(b-rsh);
        lef.extract(b);
        lef.insert(x-lsh);
        lef.insert(x-lsh);
    }
    else{
        lef.insert(x-lsh);
        rig.insert(x-rsh);
    }
}
void solve(){
    ll n,h;
    cin>>n>>h;
    lef.insert(-1e18);
    rig.insert(1e18);
    for(int i=0;i<n;i++){
        ll x;
        cin>>x;
        add(x);
        rsh+=h,lsh-=h;
    }
    cout<<mn;
}

int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    int _=1;
    // cin>>_;
    while(_--) solve();
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…