注意到 $a_i$ 取值范围是 $[1,10^4]$ ,范围很小,考虑直接桶排序
算法正确性证明很多,不说了
结论是先对 $a$ 数组排序, $ans = a_2 - a_1 +a_4 - a_3 … + a_n - a_{n - 1}$
又因为如果一个数出现2次就会出现加上这个数又减去这个数,即出现偶数次就会消掉,我们无需统计一个数出现了多少次,只需统计一个数出现次数的奇偶性即可
仅需 $55ms$ 哦!
#include <cstdio>
using namespace std;
const int N = 1e4 + 10;
int n;
int f;
bool vis[N];
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
scanf("%d", &f);
vis[f] ^= 1;
}
int ans = 0;
f = -1;
for (int i = 1; i <= 1e4; ++i)
if (vis[i]) ans += f * i, f *= -1;
printf("%d\n", ans);
}