Cod sursa(job #263060)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 19 februarie 2009 21:26:58
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <stdio.h>
#define GET_BUF fread(b,sizeof(char),8192,stdin)
#define BL 8192

int main(){
register int n,i,j=0,p,q,sg,x,s=0,l=0,L=0,smax=0;
register char b[8194];
freopen("ssm.in","r",stdin);freopen("ssm.out","w",stdout);
scanf("%d\n",&n);
q=GET_BUF;
for (i=1;i<=n;++i){
  sg=1;x=0;
  if (b[j]=='-')sg=-1,j++;
	if (j==BL){q=GET_BUF;j=0;}
  while (b[j]!=' '&&j<q){
    x=x*10+b[j]-'0';
    j++;if (j==BL){q=GET_BUF;j=0;}
  }
  x*=sg;j++;
  if (j==BL){q=GET_BUF;j=0;}
  s+=x;l++;if (s<0){s=0;l=0;}
  if (s>smax){smax=s;p=i;L=l;}
}
printf("%d %d %d\n",smax,p-L+1,p);
return 0;
}