Cod sursa(job #2346713)

Utilizator stratonedanielDaniel Stratone stratonedaniel Data 17 februarie 2019 23:42:40
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <stdlib.h>
#include <fstream>


using namespace std;



void recursion(int *sequence,int i,int sum,ofstream& write)
{
    if(sum==0)
        return;

    recursion(sequence,i-1,sum-sequence[i],write);

    write<<sequence[i]<<" ";


}

#define getmax(a,b) ((a)>(b)?a:b)

int main()
{
    ifstream read("ssm.in");
    ofstream write("ssm.out");

    int length_of_sequence;

    read>>length_of_sequence;

    int * sequence=(int *)calloc(length_of_sequence,sizeof(int));
    int * partial_sums=(int*)calloc(length_of_sequence,sizeof(int));

    for(int i=0;i<length_of_sequence;i++)
        read>>sequence[i];

    partial_sums[0]=sequence[0];
    int maximum=sequence[0];
    int index=0;

    for(int i=1;i<length_of_sequence;i++)
    {
        partial_sums[i]=getmax(sequence[i],partial_sums[i-1]+sequence[i]);

        if(partial_sums[i]>maximum)
        {
            index=i;
            maximum=partial_sums[i];
        }
    }

    write<<maximum<<'\n';
    recursion(sequence,index,maximum,write);

    free(sequence);
    free(partial_sums);


   read.close();
   write.close();

    return 0;
}