目描述
给出2个序列A={a[1],a[2],…,a[n]},B={b[1],b[2],…,b[n]},从A、B中各选出n个元素进行一一配对(可以不按照原来在序列中的顺序),并使得所有配对元素差的绝对值之和最大。
输入
输入的第1行为1个整数n
第2行包含n个整数,题目中的A序列。
第3行包含n个整数,题目中的B序列。
输出
一个数,最大配对
样例输入Copy
4 2 5 6 3 1 4 6 7
样例输出Copy
14
提示
【注释】
3与6配对,2与7配对,5与4配对,6与1配对,绝对值之差和为14
对于10%的数据,有n≤20;
对于30%的数据,有n≤100;
对于50%的数据,有n≤1000;
对于100%的数据,有n≤10000;a[i],b[i]≤1000。
代码:
#include<iostream>
#include<iomanip>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<stack>
#include<cstdio>
#include<queue>
#include<list>
#include<vector>
#include<map>
using
namespace
std;
int
a[10000],b[10000],n,cut,i=0,j;
int
main(){
cin>>n;
for
(
int
i=0;i<n;i++){
scanf
(
"%d"
,&a[i]);
}
sort(a,a+n);
for
(
int
i=0;i<n;i++){
scanf
(
"%d"
,&b[i]);
}
sort(b,b+n);
j=n;
for
(i=0;i<n;i++){
j--;
cut+=
abs
(a[i]-b[j]);
}
printf
(
"%d\n"
,cut);
return
0;
}