Cod sursa(job #1522639)

Utilizator Cudrici_CarinaCudrici Carina Cudrici_Carina Data 11 noiembrie 2015 21:19:20
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fi("ssm.in");
ofstream fo("ssm.out");
const int Dim=6000001;
long  a[Dim],c[Dim],n,smax=-10000000,i,pi,pf,s,inceput=Dim,sfarsit=Dim,p;
int main()
{
fi>>n;
for (i=1;i<=n;i++)
{fi>>a[i];
c[i] = max(c[i-1] + a[i], a[i]);
smax=max(smax,c[i]);
}

for (i=1;i<=n;i++)
if (c[i]==smax)
{   s=smax;
    pf=i;p=i;
    while (p > 0 ) {s-=a[p];if (s==0) pi=p;p--;}
    if (pi<inceput ||(pi==inceput && pf<sfarsit)) {inceput=pi;sfarsit=pf;}
}

fo<<smax<<" "<<inceput<<" "<<sfarsit;
    return 0;
}