10041
就是找中位数,我对偶数情况时取中间两个的哪一个比较了一下,但是网上别人的不用比较就计算,不知道为什么
//============================================================================
// Name : 10041.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[1000];
int N, n, sum1, sum2;
int main() {
scanf("%d", &N);
while(N--)
{
scanf("%d", &n);
for(int i = 0;i < n;i++){
scanf("%d", &a[i]);
}
sort(a, a+n);
if(n%2 == 0)
{
sum1 = 0;
sum2 = 0;
for(int i = 0;i < n;i++){
sum1 += (a[i]-a[n/2-1] > 0?a[i]-a[n/2-1]:a[n/2-1]-a[i]);
sum2 += (a[i]-a[n/2] > 0?a[i]-a[n/2]:a[n/2]-a[i]);
}
if(sum1 < sum2) printf("%d\n", sum1);
else printf("%d\n", sum2);
}
else{
sum1 = 0;
for(int i = 0;i < n;i++){
sum1 += (a[i]-a[n/2] > 0?a[i]-a[n/2]:a[n/2]-a[i]);
}
printf("%d\n", sum1);
}
}
return 0;
}

浙公网安备 33010602011771号