Cod sursa(job #586356)

Utilizator coderninuHasna Robert coderninu Data 30 aprilie 2011 16:41:37
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <cstdio>

#define Lmax 120000000

using namespace std;

char S[Lmax];
int N, rez, rezt, st, dr, stt, drt;

int getNumber() {
	static int i = 0;
	int rez = 0, semn = 1;
	while (!(S[i] <= '9' && S[i] >= '0' || S[i] == '-')) ++i;
	if (S[i] == '-') { semn = -1; ++i; }
	while (S[i] <= '9' && S[i] >= '0')
		rez = rez * 10 + S[i++] - '0';
	return rez*semn;
}

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

	scanf("%d\n", &N);
	fgets(S, Lmax, stdin);

	rez = rezt = getNumber();
	st = dr = stt = drt = 1;
	for (int i = 2; i <= N; ++i) {
		int x = getNumber();
		if (rezt + x >= x) {
			rezt += x;
			drt = i;
		}
		else {
			rezt = x;
			stt = drt = i;
		}

		if (rezt > rez) {
			rez = rezt;
			st = stt;
			dr = drt;
		} 
	}

	printf("%d %d %d\n", rez, st, dr);

	return 0;
}