题目限制
时间限制 | 内存限制 | 评测方式 | 题目来源 |
1000ms | 131072KiB | 标准比较器 | Local |
题目背景
太原成成中学第2次模拟赛 第二道
题目描述
给出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序列。
输出格式
一个数,最大配对
提示
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。
大牛:将A数列从小到大排序,B数列从大到小排序,依次配对
#include<cmath>
#include<cstdio>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#define inf 100000000
#define ll long long
using namespace std;
int n,ans;
int a[10005],b[10005];
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,greater<int>());
for(int i=1;i<=n;i++)
ans+=abs(a[i]-b[i]);
printf("%d\n",ans);
return 0;
}