Cod sursa(job #2284180)

Utilizator Turturica_DorinTurturica Dorin Turturica_Dorin Data 16 noiembrie 2018 22:15:11
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin ("ssm.in");
ofstream fout ("ssm.out");

int n, i, x, dp[ 5 ], start[ 5 ], MAX, pozi, pozf;

int main()
{
    fin>> n;
    fin >> x;
    dp[ 0 ] = x;
    start[ 0 ] = 1;
    MAX = x;
    pozi = 1;
    pozf = 1;
    for ( i = 2; i <= n; i++ )
    {
        fin >> x;
        dp[ 1 ] = x + max( 0, dp[ 0 ] );
        if ( dp[ 0 ] >= 0 )
        {
            start[ 1 ] = start[ 0 ];
        }
        else
        {
            start[ 1 ] = i;
        }
        if ( dp[ 1 ] > MAX )
        {
            MAX = dp[ 1 ];
            pozi = start[ 1 ];
            pozf = i;
        }
        dp[ 0 ] = dp[ 1 ];
        start[ 0 ] = start[ 1 ];
    }
    fout<< MAX << ' ' << pozi << ' ' << pozf;
    return 0;
}