Cod sursa(job #1963271)

Utilizator mister_adyAdrian Catana mister_ady Data 12 aprilie 2017 13:36:05
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

#define MAX_N 6000005

int N, a[MAX_N];

int best, currBest, begIndex, endIndex, currBegIndex, currEndIndex;

int main () {
	freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);

    scanf ("%d", &N);

    scanf("%d", &a[1]);

    best = currBest = a[1];
    begIndex = endIndex = currBegIndex = currEndIndex = 1;
    for (int i = 2; i <= N; i++) {
    	scanf("%d", &a[i]);
    	if (currBest >= 0) {
    		currBest += a[i];
    		currEndIndex = i;
    	} else {
    		currBest = a[i];
    		currBegIndex = currEndIndex = i;
    	}
    	if (currBest > best) {
    		best = currBest;
    		begIndex = currBegIndex;
    		endIndex = currEndIndex;
    	}
    }

    printf ("%d %d %d", best, begIndex, endIndex);

    return 0;

}