Cod sursa(job #541340)

Utilizator andreioneaAndrei Onea andreionea Data 25 februarie 2011 01:04:27
Problema Subsecventa de suma maxima Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.76 kb
#include<stdio.h>
#include<limits.h>
#include<stdlib.h>
#define BUF_SIZE 60000*1024

void read(char *filename, int *start, int *end, int *sum)
{
	FILE *f = fopen(filename,"rb");
	int i,aux,n;
	int sumc = 0, st = 0;
	*start = *end = 0;
	char *buf = (char*)malloc(BUF_SIZE);
	setbuf(f,buf);
	*sum = 0;
	fscanf(f,"%d",&n);
	for(i = 0; i<n; ++i){
		fscanf(f,"%d",&aux);
		if(sumc+aux > aux){
			sumc += aux;
		}
		else
		{
			sumc = aux;
			st = i;
		}
		if(sumc > *sum){
			*sum = sumc;
			*start = st;
			*end = i;
		}
	}
	fclose(f);
	free(buf);
}

int main()
{
	int start, end, sum;
	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;
}