Cod sursa(job #540958)
Utilizator | catana marina marinutza | Data | 24 februarie 2011 18:03:26 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.48 kb |
#include<cstdio>
using namespace std;
int n,i,max,sum,st,dr,p,u,a[6000010];
int main()
{
freopen("ssm.in","r",stdin);
freopen("ssm.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
sum=max=a[1];
st=p=dr=u=1;
for(i=2;i<=n;i++)
{
if(sum+a[i]>a[i])
{
sum=sum+a[i];
u=i;
}
else
{
sum=a[i];
p=u=i;
}
if(max<sum)
{
max=sum;
st=p;
dr=u;
}
}
printf("%d %d %d",max,st,dr);
return 0;
}