Cod sursa(job #541344)

Utilizator andreioneaAndrei Onea andreionea Data 25 februarie 2011 01:38:52
Problema Subsecventa de suma maxima Scor 95
Compilator c Status done
Runda Arhiva educationala Marime 0.85 kb
#include<stdio.h>
#include<limits.h>
#include<stdlib.h>
#define BUF_SIZE 42000*1024
void read(char *filename, int *start, int *end, int *sum)
{
	FILE *f = fopen(filename,"rb");
	int i,n, aux, sumc = 0, st = 0;
	int size = BUF_SIZE;
	char *buf = (char*)malloc(size);
	while(buf == NULL){
		size /= 2;
		buf = (char*)malloc(size);
	}
	setbuf(f,buf);
	fscanf(f,"%d",&n);
	*start = *end = 0;
	*sum = -INT_MAX;
	for(i = 0; i<n; ++i){
		fscanf(f,"%d",&aux);
		if(sumc < 0){
			sumc = aux;
			st = i;
		}
		else
			sumc += aux;
		if(sumc > *sum){
			*sum = sumc;
			*start = st;
			*end = i;
		}
	}
	fclose(f);
	free(buf);
}

int main()
{
	int start, end, sum;
	start = end;
	FILE *f = fopen("ssm.out","w");
	read("ssm.in",&start, &end, &sum);
	fprintf(f,"%d %d %d\n",sum, start+1, end+1);
	fflush(stdout);
	fclose(f);

	return 0;
}