Cod sursa(job #862594)

Utilizator varga13VarGaz13 varga13 Data 22 ianuarie 2013 19:59:58
Problema Subsecventa de suma maxima Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#define Open ifstream f("ssm.in"); ofstream g("ssm.out");
#define Close f.close(); g.close();
const int ler=6000000;
using namespace std;
Open
int a[ler], sum[ler],best,Max(),n,mmin,m,mmax;

int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
    f>>a[i];

    g<<Max();
    g<<' ';
    g<<mmin;
    g<<' ';
    g<<mmax;
    Close
    return 0;
}

int Max()
{sum[0]=0;
int min=0;
bool ok=true;
int BEST=-2147483648;
    for(int i=1;i<=n;i++)
     {
         if(a[i]<0) ok=false;
         sum[i]=a[i]+sum[i-1];

     }

    for(int i=1;i<=n;i++)
    {

        best=sum[i]-min;
        if(sum[i]<min)
        {
            m=i+1;
            min=sum[i];
        }

        if(best>BEST)
        {
            BEST=best;
            mmin=m;
            mmax=i;
        }

    }
  if(!ok) mmin--;


   return BEST;
}