Cod sursa(job #394974)

Utilizator swift90Ionut Bogdanescu swift90 Data 11 februarie 2010 21:06:50
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
char xx[60000000];
int main(){
	freopen("ssm.in","r",stdin);
	freopen("ssm.out","w",stdout);
	int n,ax,max,ss,a,x,y,i,j,semn,zero='0';
	scanf("%d",&n);
	fgets(xx,10,stdin);
	scanf("%d ",&max);
	ss=max;
	x=y=1;
	fgets(xx,60000000,stdin);
	j=0;
	for(i=2;i<=n;++i){
		ax=0;
		if(xx[j]=='-'){
			semn=-1;
			++j;
		}
		else
			semn=1;
		while('0'<=xx[j] && xx[j]<='9'){
			ax=ax*10+xx[j]-zero;
			++j;
		}
		ax=ax*semn;
		while(!('0'<=xx[j] && xx[j]<='9') && xx[j]!='-' && xx[j]!='\0')
			++j;
		ss+=ax;
		if(ss>max){
			max=ss;
			x=a;
			y=i;
		}
		if(ss<0){
			ss=0;
			a=i+1;
		}
	}
	
	printf("%d %d %d\n",max,x,y);
	fclose(stdin);
	fclose(stdout);
	return 0;
}