Cod sursa(job #1669105)

Utilizator alexburdescuBurdescu Alexandru alexburdescu Data 30 martie 2016 12:55:26
Problema Subsecventa de suma maxima Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int nrmax,i,a[6000001],n,inceput[6000001],S[6000001],sfarsit[6000001],smax,x,y;
int main ()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>a[i];
    }
    nrmax=a[1];
    x=1;
    S[0]=0;
    inceput[0]=1;
    inceput[1]=1;
    for(i=1;i<=n;i++)
    {
        if(a[i]+S[i-1]>0)
        {
            S[i]=S[i-1]+a[i];
            inceput[i]=inceput[i-1];
            sfarsit[i]=i;
        }
        else
        {
            S[i]=0;
            inceput[i]=i+1;
        }
        if(a[i]>nrmax)
        {
            nrmax=a[i];
            x=i;
        }
    }
    for(i=1;i<=n;i++)
    {
        if(S[i]>smax)
        {
            smax=S[i];
            y=i;
        }
    }
    if(smax>=0)
    {
        fout<<smax<<" "<<inceput[y]<<" "<<sfarsit[y];
    }
    else
    {
        fout<<nrmax<<" "<<x<<" "<<x;
    }
    fin.close();
    fout.close();
    return 0;
}