Pagini recente » Cod sursa (job #1365517) | Cod sursa (job #513033) | Cod sursa (job #403011) | Cod sursa (job #1823741) | Cod sursa (job #2346714)
#include <iostream>
#include <stdlib.h>
#include <fstream>
using namespace std;
#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];
}
}
int maximumaux=maximum;
int indiceaux=index;
while(maximumaux!=0)
{
maximumaux-=sequence[indiceaux];
indiceaux--;
}
write<<maximum<<" "<<indiceaux+2<<" "<<index+1;
free(sequence);
free(partial_sums);
read.close();
write.close();
return 0;
}