Cod sursa(job #2394401)

Utilizator linerunnerMihai Ion linerunner Data 1 aprilie 2019 16:46:37
Problema Subsecventa de suma maxima Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

long long n, val;
vector<long long> v;

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

int main()
{
    f >> n;
    for (int i = 0; i < n; i++) {
        f >> val;
        v.push_back(val);
    }

    global_max = -9999999999;
    max_so_far = 0;
    start_index = -1;
    end_index = -1;
    tmp_index = -1;

    for (int i = 0; i < n; i++) {
        max_so_far += v[i];
        if (max_so_far < 0) {
            max_so_far = 0;
            tmp_index = i + 1;
        }
        else 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;
}