Cod sursa(job #938663)

Utilizator sandugavrilaGavrila Alexandru sandugavrila Data 13 aprilie 2013 13:58:22
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>

using namespace std;
long long v[6000005];
int main()
{
    int i,n,min,max,st,dr,x,p,maxn,k;
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    scanf("%d",&n);
    scanf("%d",&x);
    v[1]=x;
    maxn=max=v[1];
    p=dr=1;
    for(i=2;i<=n;i++)
    {
        scanf("%d",&x);
        if(x>maxn)
        {
            maxn=x;p=i;
        }
        v[i]=v[i-1]+x;
    }
//161102 679286 798646

    min=0;
    max=-(1<<30);
    st=dr;
    for(i=1;i<=n;i++)
    {
        if(min>v[i])
        {
            min=v[i];
            k=i+1;
        }
        if(v[i]-min>max)
        {
            max=v[i]-min;
            dr=i;
            st=k;
        }
    }

    if(dr==1)
        printf("%d %d %d",maxn,p,p);
    else
        printf("%d %d %d",max,st,dr);
    return 0;
}