Cod sursa(job #1337533)

Utilizator goalexboxerFMI Alexandru Ionascu goalexboxer Data 9 februarie 2015 10:20:52
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>
#define MAXSIZE 6000001
#define FIN "ssm.in"
#define FOUT "ssm.out"

unsigned long n;
long v[MAXSIZE];
long long best[MAXSIZE];

int main()
{
    freopen(FIN, "r", stdin);
    freopen(FOUT, "w", stdout);

    scanf("%ld", &n);

    for(unsigned long i=1;i<=n;i++)
    {
        scanf("%d ", &v[i]);
    }
    unsigned long begin = 1;
    unsigned long end = 1;
    long maxx = v[1];

    best[1] = v[1];
    for(unsigned long i=2;i<=n;i++)
    {
        if(best[i-1] + v[i] > v[i])
        {
            best[i] = best[i-1] + v[i];

            if(best[i] > maxx)
                maxx = best[i];

            end++;
        }
        else
        {
            best[i] = v[i];
            begin = i;
            end = i;
        }
    }

    printf("%ld %ld %ld", maxx, begin, end-1);


}