Submission #1195083

#TimeUsernameProblemLanguageResultExecution timeMemory
1195083hackstarPalembang Bridges (APIO15_bridge)C++20
22 / 100
62 ms2700 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long
#define all(x) x.begin(),x.end()

struct node{
	char home1,off1;
	int home2,off2;
};

void solve(){
	int k,n;
	cin>>k>>n;
	vector<node>a(n);
	int mx_=0;
	for(int i=0;i<n;i++){
		cin>>a[i].home1>>a[i].home2>>a[i].off1>>a[i].off2;
		mx_=max(mx_,a[i].home2);
		mx_=max(mx_,a[i].off2);
	}
	auto dist=[&](node x,int bridge)->int{
		if(x.home1==x.off1){
			return abs(x.home2-x.off2);
		}
		return 1+abs(x.home2-bridge)+abs(x.off2-bridge);
	};	
	auto calc=[&](int bridge)->int{
		int ans=0;
		for(int i=0;i<n;i++){
			ans+=dist(a[i],bridge);
		}
		return ans;
	};
	auto get_mx=[&](int bridge)->int{
		int ans=dist(a[0],bridge);
		for(int i=1;i<n;i++){
			ans=max(ans,dist(a[i],bridge));
		}
		return ans;
	};
	int l=0,r=mx_;
	while (l<r){
		int mid=(l+r)>>1;
		if (calc(mid)<=calc(mid+1)){
			r=mid;
		}
		else{
			l=mid+1;
		}
	}
	cout<<calc(l)<<'\n';

}

signed main(){
	int t=1;
#ifdef LOCAL
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
	//cin>>t;
	while(t--){
		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...