描述 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
一个数,最大配对
很简单的贪心算法,把两个序列进行相反顺序排序,大的减小的。
- #include
- using namespace std;
-
- int main()
- {
- int n;
- cin>>n;
- int A[n];
- int B[n];
- int i;
- for(i=0;i
>A[i]; - for(i=0;i
>B[i]; - sort(A,A+n);sort(B,B+n);
- int j;
- int sum=0;
- for(i=n-1,j=0;j
=0;j++,i--) - sum+=A[i]-B[j]>0?A[i]-B[j]:B[j]-A[i];
- cout << sum << endl;
- return 0;
- }