Pagini recente » Monitorul de evaluare | Cod sursa (job #1880831) | Cod sursa (job #1874884) | Monitorul de evaluare | Cod sursa (job #1874896)
#include <iostream>
#include <cstdio>
using namespace std;
const int NMax = 6000005;
const int inf = 0x3f3f3f3f;
int v[NMax], best[NMax], N;
long long SMax=-inf;
long long S=0;
void Read()
{
scanf("%d", &N);
for(int i=1; i<=N; ++i)
scanf("%d", &v[i]);
}
void Solve()
{ int st=1, lg, dr=1;
int lstg;
for(int i=1; i<=N; ++i)
{
best[i]=v[i];
if(best[i] <= best[i-1]+v[i])
best[i]=best[i-1]+v[i];
else
st=i;
if(SMax < best[i])
{
lstg=st;
SMax=best[i];
dr=i;
}
}
printf("%lld %d %d", SMax, lstg,dr);
}
int main()
{
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
Read();
Solve();
return 0;
}