Pagini recente » Cod sursa (job #2214341) | Cod sursa (job #3126731) | Cod sursa (job #2834387) | Cod sursa (job #393982) | Cod sursa (job #1929524)
#include <iostream>
#include <cstdio>
#define NMAX 6000001
using namespace std;
void solve(int s[], int n, int i, int sum, int tstart, int &maxsum, int &maxstart, int &maxend)
{
if(i >= n) return;
sum += s[i];
if(sum > maxsum)
{
maxsum = sum;
maxstart = tstart;
maxend = i;
}
if(sum < 0)
{
sum = 0;
tstart = i + 1;
}
solve(s, n, i + 1, sum, tstart, maxsum, maxstart, maxend);
}
int s[NMAX];
int main()
{
int n, maxsum, maxstart, maxend;
freopen("ssm.in", "r", stdin);
scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%d", &s[i]);
maxsum = s[0];
maxstart = maxend = 0;
solve(s, n, 0, s[0], 0, maxsum, maxstart, maxend);
freopen("ssm.out", "w", stdout);
printf("%d %d %d\n", maxsum, maxstart + 1, maxend + 1);
return 0;
}