제출 #487341

#제출 시각아이디문제언어결과실행 시간메모리
487341leakedPalembang Bridges (APIO15_bridge)C++14
8 / 100
39 ms3012 KiB
#include <bits/stdc++.h>

#define f first
#define s second
#define pb push_back
#define vec vector
#define sz(x) (int)(x).size()
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define pw(x) (1LL<<(x))
#define fast_iati ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);

using namespace std;
template <class T> bool umin(T &a,const T &b){return (a>b?a=b,1:0);}
template <class T> bool umax(T &a,const T &b){return (a<b?a=b,1:0);}
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const ll inf=1e18;
signed main(){
    fast_iati;

    int k,n;
    cin>>k>>n;
    vec<int>l,r;
    ll ans=0;
    vec<int>kek;
    for(int i=0;i<n;i++){
        char f,s;
        int x,y;
        cin>>f>>x>>s>>y;
        if(f==s) ans+=abs(x-y);
        else{
            if(x>y) swap(x,y);
            l.pb(x);r.pb(y);
        }
    }
    n=sz(l);
    for(int i=0;i<n;i++){
        kek.pb(l[i]);
        //kek.pb(r[i]);
    }
    sort(all(kek));kek.erase(unique(all(kek)),kek.end());
    auto f=[&](int i){
        int x=kek[i];
        ll me=0;
        for(int k=0;k<n;k++){
            me+=abs(x-l[k])+abs(x-r[k])+1;
        }
        return me;
    };
    if(k==1){
        if(!sz(kek)){
            cout<<ans;
            return 0;
        }
        int tl=0,tr=sz(kek)-1;
        while(tr-tl>=3){
            int t1=tl+(tr-tl)/3;
            int t2=tr-(tr-tl)/3;
            if(f(t1)<f(t2)) tr=t2;
            else tl=t1;
        }
        ll mn=inf;
        for(int i=tl;i<=tr;i++)
            umin(mn,f(i));
        cout<<ans+mn;
    }
    else{
    cout<<22;}
    return 0;
}
/*
1 5
B 0 A 4
B 1 B 3
A 5 B 7
B 2 A 6
B 1 A 7
*/
#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...