Cod sursa(job #261536)
Utilizator | Robert Hangu Robybrasov | Data | 18 februarie 2009 13:43:57 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 95 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.65 kb |
#include <cstdio>
#define N 6000001
int A[N],n,i,j,best,maxim;
int main()
{
freopen("ssm.in","r",stdin);
freopen("ssm.out","w",stdout);
scanf("%d\n",&n);
for (i=1; i<=n; i++) scanf("%d",&A[i]);
maxim=best=A[n];
int li=n,ls=n,limax,lsmax;
for (i=n-1; i; i--)
{
if (A[i]<best+A[i])
{
best+=A[i];
li--;
}
else
{
best=A[i];
li=ls=i;
}
if (best>maxim)
{
limax=li; lsmax=ls;
maxim=best;
}
}
printf("%d %d %d",maxim,limax,lsmax);
return 0;
}