제출 #741948

#제출 시각아이디문제언어결과실행 시간메모리
741948irmuunPalembang Bridges (APIO15_bridge)C++17
22 / 100
116 ms5828 KiB
#include<bits/stdc++.h>

using namespace std;

#define pb push_back
#define ll long long
#define ff first
#define ss second
#define all(s) s.begin(),s.end()

const ll INF=1e18;

int main(){
    ll k,n;
    cin>>k>>n;
    ll l[n+5],r[n+5];
    ll dist=0,cur=0;
    vector<ll>v;
    for(ll i=1;i<=n;i++){
        char a,b;
        ll p,q;
        cin>>a>>p>>b>>q;
        dist+=abs(p-q);
        if(a!=b){
            l[cur]=min(p,q);
            r[cur]=max(p,q);
            cur++;
            v.pb(p);
            v.pb(q);
        }
    }
    dist+=cur;
    if(v.size()==0){
        cout<<dist;
        return 0;
    }
    sort(l,l+cur);
    sort(r,r+cur);
    sort(all(v));
    ll suml=0,sumr=0;
    for(ll i=0;i<cur;i++){
        sumr+=l[i];
    }
    ll c=0,d=0;
    ll ans=INF;
    for(auto x:v){
        while(c<cur&&r[c]<x){
            suml+=r[c];
            c++;
        }
        while(d<cur&&l[d]<=x){
            sumr-=l[d];
            d++;
        }
        ans=min(ans,dist+(x*c-suml)*2+(sumr-x*(cur-d))*2);
    }
    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...