题目描述
2022年亚运会在杭州举行。
浙江理工大学经常为这些大的赛事设计一些标识,上次冬运会就有浙江理工大学的设计。
亚运会开幕式,交给浙江理工大学一个旗帜设计,要求设计的旗帜有强烈的颜色反差感。
艺术设计学院的老师对颜色进行了设计,每个颜色对应一个数字,把第一次出现的n面旗帜用数组a表示,第2次出现的用数组b表示
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序列。
输出
一个数,最大配对
样例输入
4 2 5 6 3 1 4 6 7
样例输出
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<algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
long long sum=0;
int* a, * b;
a = new int[n];
b = new int[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
for (int i = 0; i < n; i++) {
cin >> b[i];
}
sort(a, a + n);
sort(b, b + n);
int x;
for (int i = 0, j = n - 1; i < n; i++, j--) {
x = a[i] - b[j];
x = (x > 0) ? x : (-x);
sum += x;
}
cout << sum;
delete[]a;
delete[]b;
return 0;
}