Cod sursa(job #2505968)

Utilizator lucamLuca Mazilescu lucam Data 7 decembrie 2019 12:25:25
Problema Subsecventa de suma maxima Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <algorithm>

const int NMAX = 6e6;
int v[NMAX];
long long s[NMAX];

int main(void)
{
    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);
    int n, pozmax;
    long long smax;
    scanf("%d", &n);
    for (int i = 0; i < n; ++i)
        scanf("%d", v + i);
    s[0] = v[0], smax = v[0];
    for (int i = 1; i < n; ++i) {
        if (s[i - 1] < 0)
            s[i] = v[i];
        else
            s[i] = v[i] + s[i - 1];
        if (s[i] > smax)
            smax = s[i], pozmax = i;
    }
    long long ts = 0;
    int secstart = pozmax;
    while (ts != smax)
        ts += v[secstart], --secstart;
    printf("%lld %d %d\n", smax, secstart + 2, pozmax + 1);
    fclose(stdin);
    fclose(stdout);
    return 0;
}