Cod sursa(job #1503227)

Utilizator mlupseLupse-Turpan Mircea mlupse Data 15 octombrie 2015 19:01:33
Problema Subsecventa de suma maxima Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
using namespace std;

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

const int NMax = 6000005;
const int oo = 2000000000;
int Max = -oo,Begin, End, Start, Finish;

int X[NMax],DP[NMax];
int N;


void Read()
{
    fin>>N;
    for(int i = 1; i<=N; ++i)
        fin>>X[i];
}

void Solve()
{
    for(int i = 1; i<=N; ++i)
        {
            if(X[i] >= X[i] + DP[i-1])
                {
                    DP[i] = X[i];
                    Begin = i;
                    End = i;
                }
            else
                {
                    DP[i] = DP[i-1] + X[i];
                    End = i;
                }

            if(DP[i] > Max)
                {
                    Max = DP[i];
                    Start = Begin;
                    Finish = End;
                }
        }
}

void Print()
{
   fout<<Max<<" "<<Start<<" "<<Finish<<"\n";
}

int main()
{
    Read();
    Solve();
    Print();
    return 0;
}