Cod sursa(job #1283999)

Utilizator demetriad-dagpagDavid Demetriad demetriad-dagpag Data 6 decembrie 2014 10:09:38
Problema Subsecventa de suma maxima Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>
#include <stdlib.h>
int v[6000001];
int main()
{
    FILE *fin,*fout;
    int n,i,s,p,max,x;
    fin=fopen("ssm.in","r");
    fout=fopen("ssm.out","w");
    fscanf(fin,"%d",&n);
    for(i=1; i<=n; i++)
        fscanf(fin,"%d",&v[i]);
    s=v[1];
    p=1;
    max=v[1];
    for(i=2; i<=n; i++)
    {
        if(s+v[i]>v[i])
            s+=v[i];
        else
            s=v[i];
        if(s>max)
        {
            max=s;
            p=i;
        }
    }
    s=v[p];
    i=p;
    while(i>0 && s!=max)
    {
        i--;
        s+=v[i];
    }
    x=i-1;
    while(v[x]==0)
        x--;
    if(x<i-1)
        i=x+1;
    fprintf(fout,"%d %d %d\n",max,i,p);
    fclose(fin);
    fclose(fout);

    return 0;
}