Cod sursa(job #270771)

Utilizator scvalexAlexandru Scvortov scvalex Data 4 martie 2009 16:17:47
Problema Subsecventa de suma maxima Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>

int N;

int main(int argc, char *argv[]) {
	int i, ss, se, sm;
	int M, A, Sc, Su;

	FILE *fi = fopen("ssm.in", "r");
	fscanf(fi, "%d", &N);
	fscanf(fi, "%d", &A);
	Sc = A;
	Su = A;
	M = 0;
	sm = Sc;
	ss = se = 0;
	//printf("%d %d %d\n", sm, ss+1, se+1);
	for (i = 1; i < N; ++i) {
		fscanf(fi, "%d", &A);
		Sc += A;
		if (Su > Sc) {
			M = i;
			Su = Sc;
		}
		//printf("%d\n", Sc);
		if ((M < i) && (Sc - Su > sm)) {
			sm = Sc - Su;
			ss = M+1;
			se = i;
			//printf("%d %d %d\n", sm, ss+1, se+1);
		}
		if (A > sm) {
			sm = A;
			ss = i;
			se = i;
			//printf("%d %d %d\n", sm, ss+1, se+1);
		}
	}
	fclose(fi);

	FILE *fo = fopen("ssm.out", "w");
	fprintf(fo, "%d %d %d\n", sm, ss+1, se+1);
	fclose(fo);

	return 0;
}