Cod sursa(job #1522955)

Utilizator fluture.Gafton Mihnea Alexandru fluture. Data 12 noiembrie 2015 10:59:35
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <cstdio>

#define NMAX 6000007
#define in "ssm.in"
#define out "ssm.out"

using namespace std;
int n, nr, dp[2], poz[2], dmax, p1max, p2max;

int main()
{
    freopen(in, "r", stdin);
    freopen(out, "w", stdout);
    scanf("%d", &n);
    for(int i = 1; i<= n; ++i)
    {
        int line = i&1, update = (!line);
        scanf("%d", &nr);
        if(i == 1)
        {
            dp[line] = nr;
            poz[line] = i;
            dmax = nr;
            p1max = i;
            p2max = i;
            continue;
        }
        if(dp[update] + nr > nr)
        {
            dp[line] = dp[update]+nr;
            poz[line] = poz[update];
            if(dp[line] > dmax)
            {
                dmax = dp[line];
                p1max = poz[line];
                p2max = i;
            }
            continue;
        }
        else
        {
            dp[line] = nr;
            poz[line] = i;
            if(dp[line] > dmax)
            {
                dmax = dp[line];
                p1max = poz[line];
                p2max = i;
            }
            continue;
        }
    }
    printf("%d %d %d\n", dmax, p1max, p2max);
    return 0;
}