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

最大连续子序列,水

View Code
#include <stdio.h>
#include <stdlib.h>
int cmp(const void*a,const void*b)
{
    return *(int*)b-*(int*)a;
}
int a[110000];
int main()
{
    int n,i;
    int max,now;
    int start,end;
    int temp;
    int p,q;
    while(scanf("%d",&n),n)
    {
        scanf("%d",a+0);
        max=now=start=end=temp=a[0];
        for(i=1;i<n;i++)
        {
            scanf("%d",a+i);
            if(now+a[i]<a[i])
            {
                now=a[i];
                temp=a[i];
            }
            else
                now+=a[i];
            if(now>max){
                max=now;
                start=temp;
                end=a[i];
            }    
        }
        p=a[0];
        q=a[n-1];
        qsort(a,n,4,cmp);
        if(a[0]<0){
            max=0;
            start=p;
            end=q;
        }
        printf("%d %d %d\n",max,start,end);
    }
    return 0;
}