Cod sursa(job #767553)
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
void citire ( int &);
void ssm (int,int );
long long max ( long long ,long long );
int v[6000020];
int main()
{
int n;
citire(n);
ssm (1,n);
//fout<<n;
return 0;
}
void ssm ( int a, int b)
{
long long i,j,best[b-a+20],maxim,imaxs=a,istart=a,imaxsf=a;
best[a]=v[a];
maxim=v[a];
for (i=a+1;i<=b;i++)
{
best[i]=max(v[i],best[i-1]+v[i]);
if (v[i]>best[i-1]+v[i])
{
istart=i;
}
if(best[i]>maxim)
{
imaxs=istart;
imaxsf=i;
maxim=best[i];
}
}
//if (maxim>best[b])
fout<<maxim<<" "<<imaxs<<" "<<imaxsf;
//else
// fout<<best[b]<<" "<<istart<<" "<<b;
}
void citire (int &n)
{
int i;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>v[i];
}
}
long long max ( long long a,long long b)
{
if (a>b)
return a;
return b;
}