Cod sursa(job #1616018)

Utilizator aimrdlAndrei mrdl aimrdl Data 27 februarie 2016 01:14:59
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <iostream>

#define MIN -9999999
int main (void) {
	freopen("ssm.in", "r", stdin);
	freopen("ssm.out", "w", stdout);
	
	int n;
	scanf("%d", &n);
	
	int max = MIN, best = MIN, besti = -1, bestLen = -1, curri = -1, currLen = -1;
	
	int v;
	for (int i = 0; i < n; ++i) {
		scanf("%d", &v);
		
		if (v > best + v) {
			best = v;
			curri = i;
			currLen = 1;
		} else {
			best = best + v;
			++currLen;
		}
		
		if (best > max) {
			max = best;
			besti = curri;
			bestLen = currLen;
		}
	}
	
	printf("%d %d %d", max, besti + 1, besti + bestLen);
	
	return 0;
}