半红半绿,大佬救我!!
查看原帖
半红半绿,大佬救我!!
1382982
jikky楼主2024/7/5 16:10
#include<bits/stdc++.h>
using namespace std;
long long st[1000003];
long long sch[1000003];
long long line[1000003];
int main(){
	unsigned long long m,n;
	scanf("%lld%lld",&m,&n);
	for(int i=1;i<=m;i++){
		scanf("%lld",&sch[i]);
	}
	sort(sch+1,sch+m+1);
	for(int i=1;i<=n;i++){
		scanf("%lld",&st[i]);
	}
	sort(st+1,st+n+1);

	for(int i=1;i<m;i++){
		line[i]=(sch[i]+sch[i+1])/2;
		//cout<<line[i]<<" ";
	}
	/*
	for(int i=1;i<=n;i++){
		//line[i]=(sch[i]+sch[i+1])/2;
		cout<<st[i]<<" ";
	}
	*/
	unsigned long long cnt=1;
	unsigned long long ans=0;
	for(int i=1;i<=n;i++){
		if(st[i]<=line[cnt]){
			ans+=abs(sch[cnt]-st[i]);
		}
		else{
			while(st[i]>line[cnt+1]&&cnt<m){
				cnt++;
			}
			if(st[i]<=line[cnt]){
				ans+=abs(sch[cnt]-st[i]);
			}
			else{
				ans+=abs(sch[cnt+1]-st[i]);
			}
		}
	}
	cout<<ans;
	return 0;
}
2024/7/5 16:10
加载中...