Pagini recente » Cod sursa (job #1678723) | Cod sursa (job #426908) | Cod sursa (job #1355489) | Cod sursa (job #363223) | Cod sursa (job #2346713)
#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;
}