Cod sursa(job #1521005)

Utilizator OlivianOlivian Dan Cretu Olivian Data 9 noiembrie 2015 20:11:10
Problema Subsecventa de suma maxima Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<cstdio>
using namespace std;
int n,v[6000000],j=0,d[6000000],maxim=-1,s,f,k=0;
int main()
{
    d[0]=0;
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
                if(v[i]==0) {k++;j=k;}
        else{
        k=0;
        }
        if(d[i-1]>0) d[i]=d[i-1]+v[i];
        else d[i]=v[i];
        if(d[i]==v[i]) {
                v[i]=i;
        }
        else {
                v[i]=v[i-1];
        }
        if(d[i]>=maxim)
        {
            maxim=d[i];
            f=i;
            s=v[i];
            if(k==0) s-=j;
        }

        }

    printf("%d %d %d\n",maxim,s,f);

}