Thursday, March 17, 2011

10041 - Vito's Family


#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
long add(register long[],register long,register long);
int main()
{
    register long t,n,i,d,dp,dn,m,pre,next;
    long s[500];
    //freopen("in.txt","r",stdin);
    scanf("%ld",&t);
    while(t--)
    {
        scanf("%ld",&n);
        for(i=0;i<n;i++)
            scanf("%ld",&s[i]);
        sort(s,s+n);
        m=n/2,pre=m-1,next=m+1;
        d=add(s,m,n);
        dp=add(s,pre,n);
        dn=add(s,next,n);
        while(dp<d)
            d=dp,dp=add(s,--pre,n);
        while(dn<d)
            d=dn,dn=add(s,++next,n);
        printf("%ld\n",d);
    }
    return 0;
}
long add(register long s[],register long k,register long n)
{
    register long sum=0,i;
    for(i=0;i<n;i++)
        if(s[i]>s[k])
            sum=sum+s[i]-s[k];
        else
            sum=sum+s[k]-s[i];
    return sum;
}

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.