http://acm.hdu.edu.cn/showproblem.php?pid=4223

View Code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define INF 100000000
int cmp(const void*a,const void*b)
{
    return *(int*)a-*(int*)b;
}
int a[110000],s[110000];
int main()
{
    int t,n;
    int i;
    int min;
    int nCase=1;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(i=1;i<=n;i++)
            scanf("%d",a+i);
        s[0]=0;
        for(i=1;i<=n;i++)
            s[i]=s[i-1]+a[i];
        qsort(s,n+1,sizeof(int),cmp);
        min=INF;
        for(i=0;i<n;i++)
            if(min>s[i+1]-s[i])
                min=s[i+1]-s[i];
        printf("Case %d: %d\n",nCase++,min);
    }
    return 0;
}