hdu dp 1231

来源:互联网 发布:兄弟连java基础视频 编辑:程序博客网 时间:2024/06/05 06:05

2014/9/12


        好困


// ʧ°ÜÕßÓÃʧ°ÜËß˵Õæʵ£¬³É¹¦ÕßÓóɹ¦ÑÚÊÎÊÂʵ¡£//Ñô¹â´ÌÍ´Ë«íø// #include<stdio.h>#include<string.h>#include<cmath> #include<algorithm>#include<iostream>#include<queue>#include<stack>#include<map>#include<climits>#include<vector>using namespace std;typedef long long ll;  #define f(x,y,i) for(int i = x;i < y; i++)#define ff(x,y,i) for(int i = x;i  <= y; i++)#define F(x,y,i) for(int i = x; i >= y; i--)#define FF(x,y,i) for(int i = x; i > y; i++)#define lson pos<<1,l,mid#define rson pos<<1|1,mid+1,r#define Min(x,y) x<y?x:y#define Max(x,y) x>y?x:y#define sc(n) scanf("%d",&n)#define pr(n) printf("%d\n",n)#define met(n,m) memset(n, m, sizeof(n)) #define mod 10007const int N=10500;int n;   int s[N];int main(){int cnt = 0;    while(~scanf("%d",&n))    {    __int64 maxn = -1;    f(0,n,i)    {    sc(s[i]);    if(s[i] > maxn)maxn = s[i];    }    if(n == 0)break;   else if(maxn < 0)printf("0 %d %d\n",s[0],s[n-1]);    else     {    maxn = -1;    int b,be,d,ed;    be = 0;    ed = n-1;    b=0;    d=0;    __int64 sum = 0;    f(0,n,i)    {    sum+=s[i];    if(sum < 0)    {    sum = 0;    b=i+1;    d=i+1;    }    else d = i;    if(sum > maxn)    {    maxn = sum;    be=b;    ed=d;    }        }        printf("%I64d %d %d\n",maxn,s[be],s[ed]);    }                }    return 0;}


0 0