Cod sursa(job #640664)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 26 noiembrie 2011 11:49:43
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>
#include <string.h>

long n, i, sum, v, pozi, mf, mi, max, y;
char s[60000001];

int main() {
	freopen("ssm.in", "r", stdin);
	freopen("ssm.out", "w", stdout);
	
	scanf("%ld\n", &n);
	gets(s);
	long h = 0;
	long aux = strlen(s);
	for (i = 1; i <= n; ++i) {
		v = 0;
		y = 1;
		if (s[h] == '-') y = -1, ++h;
		while (s[h] != ' ' && h < aux) v *= 10, v += (long)(s[h] - '0'), ++h;
		++h;
		v *= y;
		sum += v;
		if (max < sum) {max = sum; mi = pozi; mf = i;}
		if (sum < 0) {sum = 0; pozi = i + 1;}
	}
	printf("%ld %ld %ld\n", max, mi, mf);
	return 0;
}