Cod sursa(job #2346714)

Utilizator stratonedanielDaniel Stratone stratonedaniel Data 17 februarie 2019 23:48:43
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#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;
}