Cod sursa(job #1503736)

Utilizator cordun_cristinaCristina Maria Cordun cordun_cristina Data 16 octombrie 2015 20:41:19
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.36 kb
/*Subsecventa de suma maxima
Se dă un şir S[] = (s1, s2, .., sN) de lungime N. O subsecvenţă a şirului este de forma:
 (si, si+1, ..., sj) cu 1 ≤ i ≤ j ≤ N, iar suma subsecvenţei este si + si+1 + ... + sj.

Cerinţă
Se cere să se determine subsecvenţa de sumă maximă.

Date de intrare
Fişierul de intrare ssm.in conţine pe prima linie un număr natural N, reprezentând lungimea şirului.
 Următoarea linie conţine N numere întregi separate printr-un spaţiu, reprezentând în ordine elementele şirului.

Date de ieşire
În fişierul de ieşire ssm.out se vor tipări trei numere în această ordine: suma subsecvenţei de sumă maximă,
indicele de început şi indicele de sfârşit.*/
#include <fstream>

using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");

const int oo=-100000000;

int n,cp,prim,ultim,x,Max,primf,ultimf;

void Ssm()
{
    Max=oo;
    prim=1;
    for(int i=1;i<=n;i++)
    {
        f>>x;
        if(cp<0)
        {
            cp=x;
            prim=i;
            ultim=i;
        }
        else
        {
            cp=cp+x;
            ultim=i;
        }
        if(cp>Max)
        {
            Max=cp;
            primf=prim;
            ultimf=ultim;
        }
    }
}

int main()
{
    f>>n;
    Ssm();
    g<<Max<<' '<<primf<<' '<<ultimf<<'\n';
    return 0;
}