Cod sursa(job #5558)

Utilizator mastermageSchneider Stefan mastermage Data 13 ianuarie 2007 10:10:26
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>

#define maxN 1001011

int n, res;
int pro[maxN];
int din1[maxN], din2[maxN];

void inputFunc(){
	FILE*fi=fopen("2sec.in","r");
	fscanf(fi,"%d",&n);
	for(int i=0; i<n; i++){
		fscanf(fi,"%d", pro+i);
	}
	fclose(fi);
}

void outputFunc(){
	FILE*fi=fopen("2sec.out", "w");
	fprintf(fi,"%d",res);
	fclose(fi);
}



int main(){
	inputFunc();
	int sum,lst;
	
	sum=pro[0];din1[0]=sum;lst=sum;
	for(int i=1; i<n; i++){
		if(sum>0){
			sum=pro[i];
		}else{
			sum+=pro[i];
		}
		
		if(sum<lst)
			lst=sum;
		din1[i]=lst;
	}
	
	sum=pro[n-1];din2[n-1]=sum;lst=sum;
	for(int i=n-2; i>=0; i--){
		if(sum<0){
			sum=pro[i];
		}else{
			sum+=pro[i];
		}
		
		if(sum>lst)
			lst=sum;
		din2[i]=lst;
	}
	
	res=din2[2]-din1[1];
	for(int i=3; i<n; i++){
		int c=din2[i]-din1[i-1];
		if(c>res)res=c;
	}
	
	outputFunc();
	return 0;
}