题目描述
给定 n 个整数 a1,a2,…,an,n 为偶数。
现在要将它们两两配对,组成 n2 个数对。
ai 和 aj 能够配对,当且仅当 ai=aj。
每次增加操作可以使其中的任意一个数 ai 加一。
请问,要使得 n 个整数能够成功组成 n2 个数对,至少要进行多少次增加操作。
输入格式
第一行包含整数 n。
第二行包含 n 个整数 a1,a2,…,an。
输出格式
一个整数,表示所需最少操作次数。
数据范围
1≤n≤105,
1≤ai≤104
样例
输入样例1:
6
5 10 2 3 14 5
输出样例1:
5
输入样例2:
2
1 100
输出样例2:
99
先拿样例1举个例子:5 10 2 3 14 5
把样例1排序(升序)后,序列变为:2 3 5 5 10 14
最小值就应该是(假如保存在f[]数组中):f[1]-f[0]+f[3]-f[2]+f[5]-f[4]
C++代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+10;
int n;
int f[N];
int main()
{
scanf("%d",&n);
for(int i = 0;i < n;i ++){
scanf("%d",&f[i]);
}
sort(f,f+n);
int sum = 0;
for(int i = 0;i < n - 1;i+=2){
sum+=(f[i+1]-f[i]);
}
printf("%d",sum);
return 0;
}