很水,就是找出一个数,让它与数组各数的距离和最小。
很明显是中位数,模拟即可。
代码:
/*
* Author: illuz <iilluzen[at]gmail.com>
* Blog: http://blog.csdn.net/hcbbt
* File: uva10041.cpp
* Lauguage: C/C++
* Create Date: 2013-09-04 23:51:13
* Descripton: UVA 10041 Vito's Family, mid
*/
#include <cstdio>
#include <algorithm>
using namespace std;
#define rep(i, n) for (int i = 0; i < (n); i++)
const int MAXN = 510;
int a[MAXN];
int main() {
int n, t, m;
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
rep(i, n) scanf("%d", &a[i]);
sort(a, a + n);
if (n % 2) m = a[n / 2];
else m = a[n / 2 - 1];
int sum = 0;
rep(i, n) sum += abs(a[i] - m);
printf("%d\n", sum);
}
return 0;
}