Cod sursa(job #274856)
#include<stdio.h>
#define IN "ssm.in","r",stdin
#define OUT "ssm.out","w",stdout
#define Max 6000020
int n,min=2000000;
int sum[Max],stiva[Max];
int e=1,bestsum,pozmin=0,pozmax=1;
void citire()
{
int nr;
freopen(IN);
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%d",&nr);
sum[i]=sum[i-1]+nr;
}
}
void solve()
{
stiva[e++]=sum[1];
bestsum=stiva[e];
for(int i=2;i<=n;++i)
{
if(stiva[e-1]>sum[i])
{
if(bestsum<sum[pozmax]-sum[pozmin])
bestsum=sum[pozmax-1]-sum[pozmin];
e=1;
stiva[e]=sum[i];
if(e==1)
pozmin=i;
++e;
}
else
pozmax=i;
}
if(bestsum<sum[pozmax]-sum[pozmin])
bestsum=sum[pozmax-1]-sum[pozmin];
}
void afisare()
{
freopen(OUT);
printf("%d %d %d\n",bestsum,pozmin,pozmax-1);
}
int main()
{
citire();
solve();
afisare();
return 0;
}