Cod sursa(job #1736100)

Utilizator cuvacalapecoLilian Grindea cuvacalapeco Data 1 august 2016 00:37:26
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <limits.h>
#include <fstream>

using namespace std;

void maximum_subarray(long *tablou, size_t n)
{
    long sum_max = LONG_MIN, local_max = 0, temp_sum = 0;
    size_t imin = 0, imax = 0;
    size_t local_imin = 0, local_imax = 0;

    for(size_t i = 0; i < n; i++)
    {
        temp_sum = local_max + tablou[i];

        if(temp_sum >= tablou[i])
        {
            local_max = temp_sum;
            local_imax = i;
        }
        else
        {
            local_max = tablou[i];
            local_imax = i;
            local_imin = i;
        }

        if(sum_max < local_max)
        {
            sum_max = local_max;
            imax = local_imax;
            imin = local_imin;
        }

    }

    ofstream g("ssm.out");
    g << sum_max << " " << imin + 1 << " " << imax + 1;
    g.close();
}

int main()
{
    size_t n;
    long *tablou;

    ifstream f("ssm.in");

    f >> n;
    tablou = new long [n];
    for(size_t i = 0; i < n; i++)
        f >> tablou[i];

    f.close();

    maximum_subarray(tablou, n);

    return 0;
}