Cod sursa(job #1971620)

Utilizator BeatriceBBeatrice Roxana BeatriceB Data 20 aprilie 2017 17:40:33
Problema Subsecventa de suma maxima Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
#define in "ssm.in"
#define out "ssm.out"
#define N 6000003
ifstream f(in);
ofstream g(out);
long a[N], n, i, j, best=0, BEST=0, ind_BEST=0;

//void afisare_secventa(int I, int Sum)
//{
//    if(I>=1 && Sum!=0)
//    {
//        afisare_secventa(I-1,Sum-a[I]);
//        g<<a[I]<<' ';
//    }
//}

void afisare_indici(int I, int Sum)
{
    if(I>=1&&Sum-a[I]!=0)
      afisare_indici(I-1,Sum-a[I]);
     else if(Sum-a[I]==0)
        g<<I<<' ';
}

int main ()
{
    f>>n;
    for(i=1; i<=n; i++)
        {
            f>>a[i];
            if(best+a[i]>a[i]) //a[i-1]=0
                best+=a[i];
            else
                best=a[i];
            if(best>BEST)
                ind_BEST=i, BEST=best;
            //nu afiseaza cea mai scurta in caz de egalitate
        }

    //afisare_secventa(ind_BEST,BEST);
    g<<BEST<<' ';
    afisare_indici(ind_BEST,BEST);
    g<<ind_BEST;
    g<<'\n';
    f.close();
    g.close();
    return 0;
}