专栏文章

国庆集训Day2

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minp2m4i
此快照首次捕获于
2025/12/02 06:02
3 个月前
此快照最后确认于
2025/12/02 06:02
3 个月前
查看原文
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,ans=0x7ffffffffff;
int h[200005],w[200005];
int f[200005];
int f1[200005];
signed main(){
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%lld",&h[i]);
	} 
	sort(h+1,h+n+1);
	for(int i=1;i<=m;i++){
		scanf("%lld",&w[i]);
	}
	sort(w+1,w+m+1);
	for(int i=2;i<=n;i++){
		if(i%2){
			f[i]=f[i-1];
			continue;
		}
		f[i]=abs(h[i]-h[i-1]);
		f[i]+=(f[i-1]);
	} 
	for(int i=n-1;i>=2;i--){
		if(i%2){
			f1[i]=f1[i+1];
			continue;
		}
		f1[i]=abs(h[i]-h[i+1]);
		f1[i]+=(f1[i+1]);
	}
	for(int i=1;i<=m;i++){
		int sum=0; 
		int id=lower_bound(h+1,h+n+1,w[i])-h;
		if(id%2==1){
			sum+=f[id-1];
			sum+=f1[id+1];
			sum+=abs(w[i]-h[id]);
			
		}
		else{
			sum+=f[id-2];
			sum+=f1[id];
			sum+=abs(w[i]-h[id-1]);
		}
		ans=min(ans,sum);
	}
	printf("%lld",ans);
	return 0;
}
/*
*/ 

评论

0 条评论,欢迎与作者交流。

正在加载评论...