Cod sursa(job #262545)
Utilizator | Data | 19 februarie 2009 14:30:05 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.56 kb |
#include <stdio.h>
long a[6000005],n,i,smax=-(1<<30),s,x=1,inc,fin;
int main()
{
freopen ("ssm.in","r",stdin);
freopen ("ssm.out","w",stdout);
scanf("%ld",&n);
for(i=1;i<=n;++i)scanf("%ld",&a[i]);
for (i=1;i<=n;++i)
if (a[i]<0){
if (s>smax)
smax=s,inc=x,fin=i-1;
if(s+a[i]<0){x=i+1;s=0;}
else s+=a[i];
}
else{
s+=a[i];
if (s>smax)
smax=s,inc=x,fin=i-1;
}
printf("%ld %ld %ld",smax,inc,fin);
return 0;
}