제출 #1288157

#제출 시각아이디문제언어결과실행 시간메모리
1288157lambd47Palembang Bridges (APIO15_bridge)C++20
22 / 100
32 ms3792 KiB
#include<bits/stdc++.h>

using namespace std;

#define int long long

#define L(i,j,k) for(int i=(j);i<=(k);i++)
#define R(i,j,k) for(int i=(j);i>=(k);i--)
#define all(v) (v).begin(),(v).end()
#define sz(v) ((int)(v).size())

//aqui vai toda minha declaracao de odio por quem propos essa porcaria
//nao faz sentido nao estar passando isso
//solucao full dessa porcaria eh so um d&c trick olhando a porcaria da sliding window, mas nem o caso 100 passa
//nao faz o menor sentido to tiltado
//q porcaria eh essa bixo, boto uns comentarios em lugares que nem no codigo rodariam e da rte 


const int MOD=1e16;


//essa porra da RTE


void solve(){
    int n,k;cin>>k>>n;
    vector<int> evs;//lugar e tipo de evento
    int dist=0;
    vector<pair<int,int>> pevs;
   
    L(i,0,n-1){
        char c1,c2;
        int a,b;
        cin>>c1>>a>>c2>>b;
        if(c1==c2){dist+=llabs(a-b);continue;}
        evs.push_back(a);
        evs.push_back(b);
        pevs.push_back({a,b});
        dist++;
    }
    sort(all(evs));
    int distaux=0;
    int distminaux=MOD;
    if(k==1){
        if(sz(evs)){
            int ponte=evs[sz(evs)/2];
            //for(auto a:evs)dist+=llabs(a-ponte);
            for(auto [a,b]:pevs)dist+=llabs(a-ponte)+llabs(b-ponte);
            //for(auto [a,b]:pevs)dist+=llabs(a-ponte),dist+=llabs(b-ponte);
        }
        cout<<dist;
        return;
    }
    
    L(i,0,sz(evs)-1){
    	L(j,i+1,sz(evs)-1){
    	    distaux=0;
    		for(auto [a,b]:pevs){
    			distaux+=min(llabs(a-evs[i])+llabs(b-evs[i]),llabs(a-evs[j])+llabs(b-evs[j]));
			}
			distminaux=min(distaux,distminaux);
		}
	}
	cout<<dist+distminaux;
	
}

int32_t main(){
	ios_base::sync_with_stdio(0);
	cin.tie(NULL);
	solve();
}
#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...