Cod sursa(job #634982)

Utilizator cristianalex81Cristian Alexandru cristianalex81 Data 18 noiembrie 2011 03:33:36
Problema Subsecventa de suma maxima Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#define dim 6000001

typedef struct info
{
    int sum;
    int start;
    int finish;
}info;

int main()
{
    int i,x,n;
    info best,actual;
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    scanf("%d",&n);
    //initialize the sums
    scanf("%d",&x);
    actual.sum = x;
    actual.start = 0;
    actual.finish = 0;
    best = actual;
    for (i=1;i<n;i++)
    {
        scanf("%d",&x);
        if ((actual.sum + x)>x)//have a better sum
        {
            actual.sum+=x;
            actual.finish = i;
        }
        else//reset the sum
        {
            actual.sum = x;
            actual.start = i;
            actual.finish = i;
        }
        if (actual.sum > best.sum)
            best = actual;
    }
    printf("%d %d %d\n",best.sum,best.start+1,best.finish+1);
    return 0;
}