题目描述
排在小T和小K前面的一大群人中有N个男人和N个女人。
本着“男女搭配,干活不累”的原则,他(她)们希望一男一女结成对子飞上天去。
由于双人滑翔翼飞行的稳定性很大程度上决定于两侧是否平衡,所以两个人体重相差越小则组成的搭档也越好。
现在已知每个人的体重,你的任务就是将所有人结成N对并使各对的体重差的总和最小。
一对的体重差定义为重的减轻的的值,此值一定大于等于0。
譬如有一对人,男的体重为50,女的体重为55,则他(她)们的体重差为5。
反过来如果男的体重为55,女的体重为50,则他(她)们的体重差仍然是5。
输入
第一行包含一个自然数N(1≤N≤1000),表示有N对人;
第2~N+1行:每行包含一个自然数,表示N个男人的体重;
第N+2~2N+1行:每行包含一个自然数,表示N个女人的体重。
输出
仅有一行包含一个整数,表示配对后N对男女的体重差的总和的最小值。
样例
输入
4
2
8
5
5
1
4
10
7
输出
6
提示
【样例解释】
样例中,
4个男人的体重分别是2,8,5,5;
4个女人的体重分别是1,4,10,7。
按体重结对的最佳方式为:2-1, 8-10, 5-4, 5-7;
此时4对人的体重差的总和最小,其值为1+2+1+2=6。
【数据规模】
30%的数据满足:1≤N≤10,体重为不超过10的自然数。
100%的数据满足:1≤N≤1000,体重为不超过1,000,000的自然数。
参考代码:(未完成)
#include <bits/stdc++.h>
using namespace std;
bool com(int a,int b){
return a>b;
}
int main()
{
int n,cnt=0;
cin>>n;
int a[n],b[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,com);
sort(b,b+n,com);
for(int i=0;i<n;i++)
cnt +=abs(a[i]-b[i]);
cout<<cnt;
return 0;
}