Cod sursa(job #2940103)

Utilizator xDemonstyMatei Haba Ionut xDemonsty Data 14 noiembrie 2022 20:46:57
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

using namespace std;

ifstream in("ssm.in");
ofstream out("ssm.out");

int v [ 6000001 ];
int main()
{
    int n ;
    in >> n ;
    for ( int i = 1 ; i <= n ; i ++)
        in >> v [ i ] ;

    int s = 0 ;
    int maxkadane = -999999;
    int stmax =-1 ;
    int st = 1 ;
    int dr = 1 ;
    for ( int i = 1 ; i <= n ; i ++ )
    {
        s += v [ i ];

        if ( s > maxkadane )
        {
            maxkadane = s ;
            stmax = st ;
            dr = i ;
        }
        else
            if ( s == maxkadane)
        {
            if ( i - st < stmax - dr )
            {
                stmax = st ;
                dr = i ;
            }
        }

        if ( s <= 0 )
            {st = i + 1;
        s = 0 ; }
    }

    out << maxkadane << " " << stmax << " "<< dr ;
    return 0;
}