Cod sursa(job #261558)

Utilizator RobybrasovRobert Hangu Robybrasov Data 18 februarie 2009 14:24:21
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>
#define N 6000001

int A[N],n,i,j,best,maxim,len,minlen;

int main()
{
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    scanf("%d\n",&n);
    for (i=1; i<=n; i++) scanf("%d",&A[i]);
    maxim=best=A[n];
    len=1;
    minlen=N;
    int li=n,ls=n,limax,lsmax;
    for (i=n-1; i; i--)
    {
        if (A[i]<best+A[i])
        {
            best+=A[i];
            li--;
        }
        else
        {
            best=A[i];
            li=ls=i;
        }

        if (best>maxim)
        {
            limax=li; lsmax=ls;
            maxim=best;
        }
        else
            if (best==maxim && len<minlen)
            {
                len=minlen;
                limax=li; lsmax=ls;
            }
    }

    printf("%d %d %d",maxim,limax,lsmax);

    return 0;
}