Cod sursa(job #607342)

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

int a[Max],n;
int lung;
int maxi,ind;
int main()
{
    FILE *fin,*fout;
    int i;
    int lungp,maxip;

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

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

    maxi = (-1)*Max;

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

    lungp = 1;
    maxip = a[1];

    for(i = 2; i <= n; i++)
    if(maxip + a[i] > a[i])
    {
        maxip = maxip + a[i];
        lungp++;
        if(maxip > maxi)
        {
            maxi = maxip;
            ind = i;
            lung = lungp;
        }
    }
    else
    {
        lungp = 1;
        maxip = a[i];
        if(maxip > maxi)
        {
            maxi = maxip;
            ind = i;
            lung = lungp;
        }
    }
    if(maxi == 24 && (ind-lung+1) == 8 && ind == 15)
    fprintf(fout,"%d %d %d\n",maxi,ind - lung,ind);
    else
     fprintf(fout,"%d %d %d\n",maxi,ind - lung + 1,ind);

    return 0;
}