Cod sursa(job #1388052)

Utilizator andrei.arnautuAndi Arnautu andrei.arnautu Data 15 martie 2015 01:37:11
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>
#define DIM 6000600
#define INF 2000000000
using namespace std;
FILE *fin=freopen("ssm.in","r",stdin);
FILE *fout=freopen("ssm.out","w",stdout);

int n, V[DIM];

inline int MAX(int a, int b)
{
    return ((a < b) ? b : a);
}

int main()
{
    int i, best = -INF, s = 0, i1, first, last;
    scanf("%d", &n);
    for(i = 1; i <= n; ++i)
        scanf("%d", &V[i]);

    for(i = 1; i <= n; ++i)
    {
        s = MAX(s, 0);
        if( !s && V[i - 1] != 0 )
            i1 = i;
        s += V[i];
        if( s > best )
        {
            best = s, first = i1, last = i;
        }
    }
    printf("%d %d %d", best, first, last);
}