Cod sursa(job #862526)

Utilizator varga13VarGaz13 varga13 Data 22 ianuarie 2013 19:15:55
Problema Subsecventa de suma maxima Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 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[ler],Max(),n,mmin,m,mmax;

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

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

int Max()
{sum[0]=0;
int min=0;
int BEST=-2147483648;
    for(int i=1;i<=n;i++) sum[i]=a[i]+sum[i-1];
    for(int i=1;i<=n;i++)
    {
        best[i]=sum[i]-min;
        if(sum[i]<min)
        {
            m=i+1;
            min=sum[i];
        }


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

    }

   return BEST;
}