UVA 10041 - Vito's Family

一个排序好的数组中位于中间的数到其他的数的总和总是最小的,所以根据这个就可以写了。

#include<cstdio>
#include<stdlib.h>
#include<algorithm>
#define MAXD 505
using namespace std;

int a[MAXD];
int main()
{
int cas, r;
scanf( "%d", &cas);
while( cas --)
{
scanf( "%d", &r);
for( int i = 0; i < r; i ++)
scanf( "%d", &a[i]);
sort( a, a + r);
int mid = (r - 1) >> 1, s = 0;
for( int i = 0; i < r; i ++)
s += abs( a[i] - a[ mid ]);
printf( "%d\n", s);
}
return 0;
}

 

你可能感兴趣的:(uva)