Cod sursa(job #543534)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 28 februarie 2011 11:08:48
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>
#include <limits.h>
FILE *f=fopen("ex.in","r");
FILE *g=fopen("ex.out","w");
int n,v[600001];

int main(void){
	register int i;
	
	fscanf(f,"%d",&n);
	for(i=1;i<=n;i++){
		fscanf(f,"%d",&v[i]);
		v[i]+=v[i-1];
	}
	fclose(f);
	
	int u,p,smax=INT_MIN;
	//v[0]=0;
	for(i=n;i>=1;i--){
		for(register int j=i-1;j>=0;j--){
			if(v[i]-v[j]>smax){
				smax=v[i]-v[j];
				u=i;
				p=j+1;
				continue;
			}	
			if(v[i]-v[j]==smax){
				if(i-j+1<u-p+1){
					smax=v[i]-v[j];
					u=i;
					p=j+1;
				}
			}
		}
	}
	
	fprintf(g,"%d %d %d",smax,p,u);
	fclose(f);
	return 0;
}