Cod sursa(job #2394453)

Utilizator linerunnerMihai Ion linerunner Data 1 aprilie 2019 17:07:29
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("ssm.in");
ofstream g("ssm.out");

long long n, val;

long long global_max, max_so_far;
long long start_index, end_index, tmp_index;

int main()
{
    f >> n;

    f >> val;
    global_max = val;
    max_so_far = val;
    start_index = 1;
    end_index = 1;
    tmp_index = 1;

    for (int i = 1; i < n; i++) {
        f >> val;

        if (max_so_far + val < val) {
            max_so_far = val;
            tmp_index = i;
        }
        else {
            max_so_far += val;
        }

        if (max_so_far > global_max) {
            global_max = max_so_far;
            start_index = tmp_index;
            end_index = i;
        }
    }

    g << global_max << " " << start_index + 1 << " " << end_index + 1 << "\n";

    f.close();
    g.close();
    return 0;
}