Cod sursa(job #767563)

Utilizator bratualexBratu Alexandru bratualex Data 13 iulie 2012 20:05:01
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>

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

void ssm ( long long a, long long b)
{
    long long i,j,best[17],maxim,imaxs=a,istart=a,imaxsf=a,y;
    fin>>y;
    best[0]=y;
    maxim=y;
    for (i=a+1;i<=b;i++)
    {
        fin>>y;
        best[i%2]=max(y,best[!(i%2)]+y);
        if (y>best[!(i%2)]+y)
        {

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

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

    //}
}
long long max ( long long a,long long b)
{
    if (a>b)
        return a;
    return b;
}