给出2个序列A={a[1],a[2],…,a[n]},B={b[1],b[2],…,b[n]},从A、B中各选出n个元素进行一一配对(可以不按照原来在序列中的顺序),并使得所有配对元素差的绝对值之和最大。
就是正着排序 反着排序 不过我不会证明
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int N=10005;
int n,a[N],b[N];
int main(){
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%d",a+i);
for (int i=1;i<=n;i++) scanf("%d",b+i);
sort(a+1,a+n+1); sort(b+1,b+n+1);
int ans=0;
for (int i=1;i<=n;i++) ans+=abs(a[i]-b[n-i+1]);
printf("%d\n",ans);
}