Cod sursa(job #2639352)

Utilizator alex.livadaruLivadaru Alexandru alex.livadaru Data 1 august 2020 15:44:16
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <vector>
#include <fstream>
using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

int main() {
    int n;
    fin >> n;
    vector<int> v(n + 1);

    for (int i = 1; i < n + 1; ++i) {
        int x;
        fin >> x;
        v[i] = x;
    }

    int currentMax, globalMax, leftInd, rightInd;
    int gli, gri;
    currentMax = globalMax = v[1];
    leftInd = rightInd = gli = gri = 1;

    for (int i = 2; i < v.size(); ++i) {
        if (v[i] > (currentMax + v[i])) {
            leftInd = rightInd = i;
            currentMax = v[i];
        } else {
            ++rightInd;
            currentMax = v[i] + currentMax;
        }

        if (currentMax > globalMax) {
            globalMax = currentMax;
            gli = leftInd;
            gri = rightInd;
        }
    }

    fout << globalMax << " " << gli << " " << gri;

    return 0;
}