Cod sursa(job #1736096)

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

using namespace std;

void maximum_subarray(long *tablou, size_t n)
{
    long sum_max = -2147483648, 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 >= 0)
        {
            local_max = temp_sum;
            local_imax = i;
        }
        else
        {
            local_max = 0;
            local_imax = i;
            local_imin = i + 1;
        }

        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;
}