Cod sursa(job #1183790)

Utilizator bilbor987Bogdan Pocol bilbor987 Data 10 mai 2014 10:49:30
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<iostream>
#include<fstream>

using namespace std;

ifstream f("ssm.in");
ofstream g("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 citire()
{
    int i;
    f >> n;
    f >> nr;  v[0] = nr; Max = v[0];
    Begin = End = BeginEnd = EndEnd = 1;
    for(i = 1; i < n; i++)
    {
        f >> 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()
{
    citire();
    g << Max << " " << BeginEnd << " " << EndEnd;
    return 0;
}