Cod sursa(job #2506341)

Utilizator lucamLuca Mazilescu lucam Data 7 decembrie 2019 20:53:35
Problema Subsecventa de suma maxima Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <cstdio>

const int NMAX = 6e6;
int ind[NMAX], s[NMAX];

int main(void)
{
    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);
    int n, begpos, x, endpos, smax;
    scanf("%d %d", &n, &x);
    s[0] = smax = x, ind[0] = 1;
    for (int i = 1; i < n; ++i) {
        scanf("%d", &x);
        if (s[i - 1] < 0)
            s[i] = x, ind[i - 1] = i;
        else
            s[i] = x + s[i - 1], ind[i - 1] = ind[i - 2];
        if (s[i] > smax)
            smax = s[i], begpos = i, endpos = ind[i - 1];
    }
    printf("%d %d %d\n", smax, endpos + 1, begpos + 1);
    return 0;
}