Cod sursa(job #767546)

Utilizator bratualexBratu Alexandru bratualex Data 13 iulie 2012 19:42:08
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
void citire ( int &);
void ssm (int,int );
int v[6000000];
int main()
{
    int n;
    citire(n);
    ssm (1,n);
    //fout<<n;
    return 0;
}

void ssm ( int a, int b)
{
    long long i,j,best[b-a+6],maxim,imaxs=a,istart=a,imaxsf=a;
    best[a]=v[a];
    maxim=v[a];
    for (i=a+1;i<=b;i++)
    {

        best[i]=max(v[i],best[i-1]+v[i]);
        if (v[i]>best[i-1]+v[i])
        {

            istart=i;
        }
        if(best[i-1]>maxim)
            {
                imaxs=i-1;
                imaxsf=i-1;
                maxim=best[i-1];
            }
    }
    if (maxim>best[b])
        fout<<maxim<<" "<<imaxs<<" "<<imaxsf;
    else
        fout<<best[b]<<" "<<istart<<" "<<b;
}

void citire (int &n)
{
    int i;
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];

    }
}