Cod sursa(job #1874889)

Utilizator dragomirmanuelDragomir Manuel dragomirmanuel Data 10 februarie 2017 15:36:29
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <cstdio>

using namespace std;

const int NMax = 6000005;
const int inf = 0x3f3f3f3f;

int v[NMax], best[NMax], N;
long long SMax=-inf;
long long S=0;

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

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

void Solve()
{ int st=1, lg, dr=1;
 int lstg;
    for(int i=1; i<=N; ++i)
    {
        best[i]=v[i];

        if(best[i] <= best[i-1]+v[i])
            best[i]=best[i-1]+v[i];
        else
            st=i;

        if(SMax < best[i])
        {
            lstg=st;
            SMax=best[i];
            dr=i;

        }
    }

    cout<<SMax<<" "<<lstg<<" "<<dr;
}

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

   Read();
   Solve();
    return 0;
}