Submission #1257299

#TimeUsernameProblemLanguageResultExecution timeMemory
1257299MasterDebaterPalembang Bridges (APIO15_bridge)C++20
0 / 100
1 ms328 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<ll,ll>
#define F first
#define S second
const int N=1e5+10;
ll n,k,ans,tmp,lsum,rsum,pref[N];
vector<pii>v;
multiset<ll>l,r;
bool cmp(pii a,pii b){
	return a.F+a.S<b.F+b.S;
}
void add(ll x){
	if(l.empty() or (*--l.end())<=x)l.insert(x),lsum+=x;
	else r.insert(x),rsum+=x;
	if(l.size()-1>=r.size()+1){
		ll y=(*--l.end());
		r.insert(y);
		l.erase(--l.end());
		rsum+=y;
		lsum-=y;
	}
	if(r.size()>l.size()){
		ll y=(*r.begin());
		l.insert(y);
		r.erase(r.begin());
		lsum+=y;
		rsum-=y;
	}
	return;
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cin>>k>>n;
	for(int i=0;i<n;i++){
		char a,b;
		int x,y;
		cin>>a>>x>>b>>y;
		if(a==b)ans+=abs(x-y);
		else v.push_back({x,y});
	}
	n=v.size();
	ans+=n;
	sort(v.begin(),v.end(),cmp);
	for(int i=0;i<n;i++){
		add(v[i].F);
		add(v[i].S);
		pref[i+1]=rsum-lsum;
	}
	tmp=pref[n];
	if(k==2){
		l.clear();
		r.clear();
		lsum=rsum=0;
		for(int i=n-1;i>=0;i--){
			add(v[i].F);
			add(v[i].S);
			tmp=min(tmp,rsum-lsum+pref[i]);
		}
	}
	cout<<tmp+ans;
	return 0;
}
#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...