Cod sursa(job #627715)

Utilizator d.andreiDiaconeasa Andrei d.andrei Data 30 octombrie 2011 15:06:40
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <cstdio>

#define file_in "ssm.in"
#define file_out "ssm.out"

int N,i,suma,smax,ind,inc,sf,V[6001010];

#define D 8192
char g_buf[D];
int g_p=D-1;

inline int get()
{

	int x=0;
	while (g_buf[g_p]<'0' || g_buf[g_p]>'9')
		if (++g_p==D) fread(g_buf,1,D,stdin),g_p=0;
	while (g_buf[g_p]>='0' && g_buf[g_p]<='9'){
		x=x*10+g_buf[g_p]-'0';
		if (++g_p==D) fread(g_buf,1,D,stdin),g_p=0;
	}
	return x;
}

int main(){
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	//scanf("%d", &N);
	N=get();
	for (i=1;i<=N;++i)
		 //scanf("%d", &V[i]);
	V[i]=get();
	smax=-0x3f3f3f3f;
	suma=0;
	for (i=1;i<=N;++i){
		if (suma<0){
			suma=V[i];
			ind=i;
		}
		else
			suma+=V[i];
		if (smax<suma){
			smax=suma;
			inc=ind;
			sf=i;
		}
	}
	
	printf("%d %d %d", smax,inc,sf);
	
	return 0;
	
}