给定 n 个整数 a1,a2,…,an,n 为偶数。
现在要将它们两两配对,组成 n2 个数对。
ai 和 aj 能够配对,当且仅当 ai=aj。
每次增加操作可以使其中的任意一个数 ai 加一。
请问,要使得 n 个整数能够成功组成 n2 个数对,至少要进行多少次增加操作。
数据范围
1≤n≤105,
1≤ai≤104
输入格式
第一行包含整数 n。
第二行包含 n 个整数 a1,a2,…,an。
输出格式
一个整数,表示所需最少操作次数。
输入样例1:
6
5 10 2 3 14 5
输出样例1:
5
输入样例2:
2
1 100
输出样例2:
99
这题较水,一道贪心题,题目标的中等估计是标错了
题目大意是两个相等的数可以两两配对,我们每次操作可以使其中一个数加一,问最少的操作次数。
容易想出,一个数配对肯定是与其差值最小的数,操作次数才最小,
所以我们只需要将数组排序,每两个数一组即可,最后统计每两个数之间的差值之和就是答案。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+3;
int a[maxn];
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
int ans=0;
for(int i=2;i<=n;i+=2){
ans+=a[i]-a[i-1];
}
printf("%d",ans);
return 0;
}