Cod sursa(job #1183788)

Utilizator hopingsteamMatraguna Mihai-Alexandru hopingsteam Data 10 mai 2014 10:41:16
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include    <iostream>
#include    <fstream>

using namespace std;

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

int v[6000005], N, nr;
int Begin, End, BeginEnd, EndEnd, Max;

/*
if(v[i-1] + nr < nr) - conditia 1 - de unde incepe - unde se sfarseste
else - conditia 2 - continua sirul ( ~ unde se sfarseste )

if(v[i] > max)
{
    maxfinal = max;
    inceputfinal = inceput;
    sfarsitfinal = sfarsit;
}

*/

void read()
{
    fin >> N;
    fin >> nr;  v[0] = nr; Max = v[0];
    Begin = End = BeginEnd = EndEnd = 1;
    for(int i = 1; i < N; i++)
    {
        fin >> nr;
        if(v[i-1] + nr < nr)
        {
            v[i] = nr;
            Begin = i + 1;
            End = i + 1;
        }
        else
        {
            v[i] = v[i-1] + nr;
            End = i + 1;
        }
        if(v[i] > Max)
        {
            Max = v[i];
            BeginEnd = Begin;
            EndEnd = End;
        }
    }
}

int main()
{
    read();
    fout << Max << " " << BeginEnd << " " << EndEnd;
    return 0;
}