Cod sursa(job #1604606)

Utilizator robert.stefanRobert Stefan robert.stefan Data 18 februarie 2016 13:49:40
Problema Subsecventa de suma maxima Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.93 kb
#include <stdio.h>
#include <stdlib.h>

#define IN "ssm.in"
#define OUT "ssm.out"
#define NMAX 6000001
#define INT_MIN  (1 << (sizeof (int) * 8 - 1))


int n, v[NMAX];

inline void read (void){
    int i;
    scanf ("%d", &n);
    for (i = 1; i <= n; ++ i)
        scanf ("%d", &v[i]);
}

void best (void){
    int bestSum, start0, start, stop, i, sum;

    bestSum = INT_MIN, sum = 0, start0 = 1;

    for (i = 1; i <= n; ++ i){
        if (sum < 0){
            sum = v [i];
            start0 = i;
        }
        else{
            sum += v[i];
        }

        if (bestSum < sum){
            start = start0;
            stop = i;
            bestSum = sum;
        }

    }

    printf ("%d %d %d\n", bestSum, start, stop);
}

int main()
{
    freopen (IN, "r", stdin);
    freopen (OUT, "w", stdout);

    read ();
    best ();

    fclose (stdin);
    fclose (stdout);
    return 0;
}