Cod sursa(job #540372)

Utilizator slycerdan dragomir slycer Data 23 februarie 2011 21:59:48
Problema Subsecventa de suma maxima Scor 75
Compilator c Status done
Runda Arhiva educationala Marime 0.87 kb
//http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.12.html
#include <stdio.h>
#include <stdlib.h>
int main() {

	FILE * out = fopen("ssm.out", "w");
	FILE * in = fopen("ssm.in", "rb");
	//printf("%d",BUFSIZ);
	char * buffer = calloc(BUFSIZ,sizeof(char));
	//setbuf(in,buffer); 
	size_t dim = 1028*128;
	//printf("%d",dim); 
	setvbuf(in,NULL,_IOFBF,dim);
	int n; 
	fscanf(in,"%d",&n); 
	int i;
	int suma = 0; 
	int startIndice = -1; 
	int endIndice = -1; 
	int maxSuma = -1* (1<<16); 
	int maxStart = -1; 
	int maxEnd = -1; 
	for ( i=0; i<n; i++){
		int k; 
		fscanf(in,"%d",&k);
		if ( k>k+suma ){
			suma = k; 
			startIndice = i; 
			endIndice = i; 
		} else {
			suma=suma+k; 
			endIndice = i; 
		}
		if ( suma>maxSuma){
			maxSuma = suma; 
			maxStart = startIndice; 
			maxEnd = endIndice; 
		}
	}
	
	fprintf(out,"%d %d %d",maxSuma,maxStart+1,maxEnd+1);
	
	fclose(out);
	fclose(in);
}