Cod sursa(job #677802)

Utilizator marius135Dumitran Adrian Marius marius135 Data 10 februarie 2012 18:14:02
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
// Infoarena - Arhiva Educationala Subsecventa de Suma Maxima
// Februrie 2012 Marius Dumitran
// O parcurgere O(N) daca suma scade sub 0 incepem o noua subsecventa

#include<string.h>
#include<stdio.h>

int main() {
	
	freopen ("ssm.in", "r", stdin);
	freopen ("ssm.out", "w", stdout);
	int N;
	scanf("%d", &N);
	
	
	long long optim = -(1<<30) *(long long) 4;
	long long sum = optim;
	int start_opt = -1, end_opt = -1;
	int start = 1;
	for( int i = 1; i <= N; ++i) {
		int a;
		scanf("%d", &a);
		if ( sum > 0 ) {
			sum += a;
		}
		else {
			sum = a;
			start = i;
			
		}
		if( sum > optim ) {
			start_opt = start;
			end_opt = i;
			optim = sum;
		}
	}
	
	printf("%d %d %d\n", int(optim), start_opt, end_opt);
	
	
	
	return 0;
}