hdu 1231

来源:互联网 发布:计算机算法的特征 编辑:程序博客网 时间:2024/04/29 07:09

和max sum那道题有点类似

代码:

#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#include <stack>#include <iostream>#include <vector>#include <queue>#include <map>#include <set>using namespace std;int f[10005];int sum[10005];int main(){   int n;   while(scanf("%d",&n),n)   {       for(int i=1;i<=n;i++)       scanf("%d",&f[i]);        sum[1]=f[1];        for(int i=2;i<=n;i++)        sum[i]=max(sum[i-1]+f[i],f[i]);        int maxn=-0x7fffffff;        int sign;        for(int i=1;i<=n;i++)        {            if(sum[i]>maxn)            {                maxn=sum[i];                sign=i;            }        }        int ksign=f[sign];        for(int i=sign;i>1;i--)        if(sum[i-1]+f[i]==sum[i])        {           ksign=sum[i-1];        }        else        break;        if(maxn<0)        {            maxn=0;            ksign=f[1];            sign=n;        }        printf("%d %d %d\n",maxn,ksign,f[sign]);   }}