Cod sursa(job #1686259)

Utilizator diviadivia negoescu divia Data 12 aprilie 2016 10:04:53
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<stdio.h>
FILE *fin,*fout;
int n,i,x,v[6000001],start,endmax,startmax;
long long smaxim,sbynow;
int main()
{
    fin=fopen("ssm.in","r");
    fout=fopen("ssm.out","w");
    fscanf(fin,"%d\n",&n);
    for(i=1;i<=n;i++)
    {
        fscanf(fin,"%d ",&v[i]);
    }
    smaxim=0;
    sbynow=0;
    for(i=1;i<=n;i++)
    {
        x=v[i]+sbynow;
        if(x<0){x=0; start=0;}
        else if (x>=0){

            if (start==0){start=i;}
        }
        sbynow=x;
        if(sbynow>smaxim){
                smaxim=sbynow;
                startmax=start;
                endmax=i;
        }
        else if(smaxim==sbynow)
        {
            int l1, l2;
            l1=endmax-startmax+1;
            l2=i-start+1;
            if(l2<l1){endmax=i; startmax=start;}
        }
    }
    fprintf(fout,"%lld %d %d",smaxim,startmax,endmax);
    return 0;
}