Cod sursa(job #1922793)

Utilizator dragomirmanuelDragomir Manuel dragomirmanuel Data 10 martie 2017 18:56:47
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <cstdio>

using namespace std;

const int NMax = 6000000;

int v[NMax], best[NMax], N;
int bestmax= - 0x3f3f3f3f, st, dr;

void Read()
{
    scanf("%d", &N);

    for(int i=1; i<=N; ++i)
        scanf("%d", &v[i]);
}

int stg=1;

void Solve()
{
    for(int i=1; i<=N; ++i)
    {
        best[i]=v[i];

        if(v[i]+best[i-1] >= best[i])
            best[i]=best[i-1]+v[i];
        else
        {
            stg=i;
        }

        if(best[i] > bestmax)
            {bestmax=best[i];
             st=stg;
             dr=i;
            }
    }
}

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

    Read();
    Solve();
    printf("%d %d %d", bestmax, st, dr);
    return 0;
}