Cod sursa(job #1669132)

Utilizator alexburdescuBurdescu Alexandru alexburdescu Data 30 martie 2016 13:22:25
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int nrmax,i,a[6000001],n,pi,S[6000001],pf,smax,x,y,pif;
int main ()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>a[i];
    }
    nrmax=a[1];
    x=1;
    S[0]=0;
    pi=1;
    pf=1;
    smax=0;
    for(i=1;i<=n;i++)
    {
        if(a[i]+S[i-1]>=0)
        {
            S[i]=S[i-1]+a[i];
            if(S[i]>smax)
            {
                pf=i;
                smax=S[i];
                pif=pi;
            }

        }
        else
        {
            S[i]=0;
            pi=i+1;
        }
        if(a[i]>nrmax)
        {
            nrmax=a[i];
            x=i;
        }
    }
    if(smax>0)
    {
        fout<<smax<<" "<<pif<<" "<<pf;
    }
    else
    {
        fout<<nrmax<<" "<<x<<" "<<x;
    }
    fin.close();
    fout.close();
    return 0;
}