输入样例1:
6
5 10 2 3 14 5
输出样例1:
5
输入样例2:
2
1 100
输出样例2:
99
题解
结论:排序后,相邻配对必为答案
n = 4的情形易证
假设存在a<b<c<d
只会存在两种配对情况
- b和c配对,a和d配对,则ans1 = c - b + d - a
- a和b配对,c和d配对,则ans2 = b - a + d - c
ans1 - ans2 = 2*(c - b) > 0
所以配对情况2优于配对情况1,可扩展到n个数上
#include<bits/stdc++.h>
using namespace std;
const int N = 10005;
int n, num[N];
int main(){
scanf("%d", &n);
int x;
for(int i = 1; i <= n; i++){
scanf("%d", &x);
num[x] = (num[x] + 1) % 2;
}
int pre = -1, res = 0;
for(int i = 1; i < N; i++){
if(num[i] == 1){
if(pre == -1) pre = i;
else {
res += i - pre;
pre = -1;
}
}
}
cout<<res;
return 0;
}
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int n;
int a[N];
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i ++ ) scanf("%d", &a[i]);
sort(a, a + n);
int res = 0;
for (int i = 0; i < n; i += 2) res += a[i + 1] - a[i];
printf("%d\n", res);
return 0;
}