T4样例过不去,求帮助

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+10;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
int n,m,a[N],b[N],t;
ll num=0;
bool cmp(int a,int b){
	return a>b;
}
int main(){
	cin>>t;
	while(t--){
		num=0;
		n=read(),m=read();
		for(int i=1;i<=n;i++) a[i]=read();
		for(int j=1;j<=m;j++) b[j]=read();
		sort(b+1,b+m+1);
		sort(a+1,a+n+1,cmp);
		for(int i=1;i<=n;i++)
			num+=abs(a[i]-b[i]);
		cout<<num<<endl;
	}
	return 0;
}

题目传送口:https://www.xinyoudui.com/ac/contest/747004E6F00060F03109486/problem/9783

喵,把题目贴上去

其他班的人看不到喵

abs(a[i]-b[i]);

不仅要求a[i]-b[i]还要和a最后一个元素和b最后一个元素比较

if(abs(a[i]-b[t])>=abs(a[j]-b[h]))
{
	ans+=abs(a[i]-b[t]);
	i++;
	t--;
}
else
{
	ans+=abs(a[j]-b[h]);
	j--;
	h++;
}
2 个赞
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+10;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
int n,m,a[N],b[N],t;
ll num=0;
bool cmp(int a,int b){
	return a>b;
}
int main(){
	cin>>t;
	while(t--){
		num=0;
		n=read(),m=read();
		for(int i=1;i<=n;i++) a[i]=read();
		for(int j=1;j<=m;j++) b[j]=read();
		sort(b+1,b+m+1);
		sort(a+1,a+n+1,cmp);
		int i=1,j=n,t=1,h=m;
		while(i<=j)
			if(abs(a[i]-b[t])>=abs(a[j]-b[h])) num+=abs(a[i]-b[t]),i++,t--;
			else num+=abs(a[j]-b[h]),j++,h--;		
		cout<<num<<endl;
	}
	return 0;
}
i++,t--

i++,t++

j++,h--

j–,h–