Cod sursa(job #1521828)

Utilizator Cudrici_CarinaCudrici Carina Cudrici_Carina Data 10 noiembrie 2015 21:19:00
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 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;
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;pi=i;
    while (s !=0 ) {s-=a[pi];pi--;}
    pi++;
      while (a[pi-1] ==0) pi--;


    if (pi<inceput) {inceput=pi;sfarsit=pf;} else
     if (pi==inceput) if (pf<sfarsit) {inceput=pi;sfarsit=pf;}
}

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