Submission #1330899

#TimeUsernameProblemLanguageResultExecution timeMemory
1330899WarinchaiPalembang Bridges (APIO15_bridge)C++20
22 / 100
102 ms8492 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;

int pre[200005];
int suf[200005];

priority_queue<int,vector<int>,greater<int>>pqr;
priority_queue<int>pql;
int cans=0;
int inf=1e18;

void push(int x){
    if(!pqr.empty()&&x>pqr.top()){
        cans+=abs(x-pqr.top());
        pqr.push(x);
        pqr.push(x);
        pql.push(pqr.top());
        pqr.pop();
    }else if(!pql.empty()&&x<pql.top()){
        cans+=abs(x-pql.top());
        pql.push(x);
        pql.push(x);
        pqr.push(pql.top());
        pql.pop();
    }else{
        pql.push(x);
        pqr.push(x);
    }
}

int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int k,n;cin>>k>>n;
    int ans=0;
    vector<pair<int,int>>v;
    for(int i=1;i<=n;i++){
        char a,c;
        int b,d;
        cin>>a>>b>>c>>d;
        if(a==c){
            ans+=abs(b-d);
        }else{
            ans++;
            v.push_back({b,d});
        }
    }
    sort(v.begin(),v.end());
    for(int i=1;i<=v.size();i++){
        auto x=v[i-1];
        push(x.first);
        push(x.second);
        pre[i]=cans;
    }
    while(!pql.empty())pql.pop();
    while(!pqr.empty())pqr.pop();
    cans=0;
    for(int i=v.size();i>=1;i--){
        auto x=v[i-1];
        push(x.first);
        push(x.second);
        suf[i]=cans;
    }
    //cerr<<"work\n";
    if(k==1){
        cout<<cans+ans<<"\n";
    }else{
        int tans=inf;
        for(int i=1;i<v.size();i++){
            tans=min(tans,pre[i]+suf[i+1]);
        }
        if(v.size()<=1)tans=0;
        cout<<ans+tans<<"\n";
    }
}
#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...