Cod sursa(job #607307)

Utilizator MirceampMuresan Mircea Paul Mirceamp Data 11 august 2011 16:27:55
Problema Subsecventa de suma maxima Scor 75
Compilator c Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#include <stdlib.h>
#define Max 6000001


int a[Max],n;
int bsol[Max];
int lung[Max];
int maxi,index;
int main()
{
    FILE *fin,*fout;
    int i;

    fin = fopen("ssm.in","r");
    fout = fopen("ssm.out","w");

    fscanf(fin,"%d",&n);

    for(i = 1; i <= n; i++)
    fscanf(fin,"%d",&a[i]);

    bsol[1] = a[1];
    lung[1] = 1;

    for(i = 2; i <= n; i++)
    if(bsol[i-1] + a[i] > a[i])
    {
        bsol[i] = bsol[i-1] + a[i];
        lung[i] = lung[i-1] + 1;
        if(bsol[i] > maxi)
        {
            maxi = bsol[i];
            index = i;
        }
    }
    else
    {
        lung[i] = 1;
        bsol[i] = a[i];
    }

    fprintf(fout,"%d %d %d\n",maxi,index - lung[index] + 1,index);

    return 0;
}