Cod sursa(job #1521817)

Utilizator Cudrici_CarinaCudrici Carina Cudrici_Carina Data 10 noiembrie 2015 21:06:25
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 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) {s-=a[pi];pi--;}

    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;
}