描述 Description
给出2个序列A={a[1],a[2],…,a[n]},B={b[1],b[2],…,b[n]},从A、B中各选出n个元素进行一一配对(可以不按照原来在序列中的顺序),并使得所有配对元素差的绝对值之和最大。
输入格式 InputFormat
输入的第1行为1个整数n
第2行包含n个整数,题目中的A序列。
第3行包含n个整数,题目中的B序列。
输出格式 OutputFormat
一个数,最大配对
很简单的贪心算法,把两个序列进行相反顺序排序,大的减小的。
<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int A[n];
int B[n];
int i;
for(i=0;i<n;i++) cin>>A[i];
for(i=0;i<n;i++) cin>>B[i];
sort(A,A+n);sort(B,B+n);
int j;
int sum=0;
for(i=n-1,j=0;j<n,i>=0;j++,i--)
sum+=A[i]-B[j]>0?A[i]-B[j]:B[j]-A[i];
cout << sum << endl;
return 0;
}