제출 #1327866

#제출 시각아이디문제언어결과실행 시간메모리
1327866khanhphucscratchSafety (NOI18_safety)C++20
71 / 100
133 ms7700 KiB
#pragma GCC optimize("trapv")
#include<bits/stdc++.h>
#define int long long
#define intt __int128
using namespace std;
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n, h; cin>>n>>h;
    priority_queue<int> le;
    priority_queue<int, vector<int>, greater<int>> ri;
    int lelazy = 0, rilazy = 0;
    intt curx = 0, cury = 0, slope = 0;
    for(int i = 1; i <= n; i++){
        int x; cin>>x;
        //Min range
        lelazy -= h; curx -= h; rilazy += h;
        //Add x
        cury += abs(curx - x); slope--;
        if(le.size() == 0 || le.top()+lelazy >= x){
            le.push(x-lelazy); le.push(x-lelazy);
        }
        else{
            ri.push(x-rilazy); ri.push(x-rilazy);
        }
        //Rebalanced
        while(le.size() < ri.size()){
            int y = ri.top() + rilazy; ri.pop();
            le.push(y-lelazy);
        }
        while(le.size() > ri.size()){
            int y = le.top() + lelazy; le.pop();
            ri.push(y-rilazy);
        }
    }
    vector<int> p;
    while(le.size() > 0){
        p.push_back(le.top() + lelazy); le.pop();
    }
    while(ri.size() > 0){
        p.push_back(ri.top() + rilazy); ri.pop();
    }
    sort(p.begin(), p.end());
    int ans = 1e18;
    for(int i : p){
        cury += slope * (i-curx);
        curx = i; slope++;
        ans = min(ans, (int)cury);
    }
    cout<<ans;
}
#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...