Cod sursa(job #1727650)

Utilizator vladdy47Bucur Vlad Andrei vladdy47 Data 11 iulie 2016 13:48:06
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
# include <bits/stdc++.h>

using namespace std;

const int Nmax = 6000000 + 5;

int n, a[Nmax], D[Nmax], i;

int main ()
{
    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);

    scanf("%d\n", &n);

    for (i = 1; i <= n; ++i)
        scanf("%d ", &a[i]);

    D[0] = 0;

    int ans = 0, beginn, endd, start;

// dinamica : D[i] = max ( D[i - 1] + a[i], a[i] ) ;

    for (i = 1; i <= n; ++i)
    {
        if (a[i] > D[i - 1] + a[i]) D[i] = a[i], start = i;
            else D[i] = D[i - 1] + a[i];

        if (D[i] > ans) ans = D[i], beginn = start, endd = i;
    }

    printf("%d %d %d\n", ans, beginn, endd);

    return 0;
}