Cod sursa(job #1337961)

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

int n;
int v[MAXSIZE];
int best[MAXSIZE];

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

    scanf("%d", &n);

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

    best[1] = v[1];
    for(int i=2;i<=n;i++)
    {

        sum += v[i];

        if(sum < 0)
        {
            sum = 0;
            begin = i+1;
        }
        if(best[i-1] + v[i] > v[i])
        {
            best[i] = best[i-1] + v[i];

            if(best[i] > maxx)
            {
                maxx = best[i];
                end = i;
            }

        }
        else
        {
            best[i] = v[i];
        }
    }

    printf("%d %d %d", maxx, begin, end);

    return 0;

}