Cod sursa(job #2841361)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 29 ianuarie 2022 16:54:26
Problema Subsecventa de suma maxima Scor 75
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <vector>
#include <fstream>
#include <algorithm>
using namespace std;

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

    int n;
    fin >> n;

    vector<int> a(n);
    for (auto &r : a)
        fin >> r;

    vector<int> s(n);
    vector<int> inceput(n);

    s[0] = a[0];
    inceput[0] = 0;

    for (int i = 1; i < n; ++i) {
        if (/*a[i] > s[i-1] + a[i]*/ s[i-1] < 0) {
            s[i] = a[i];
            inceput[i] = i;
        }
        else {
            s[i] = s[i-1] + a[i];
            inceput[i] = inceput[i-1];
        }
    }

    int maxim = s[0];
    int incep_maxim = inceput[0];
    int sf_maxim = 0;

    for (int i = 1; i < n; ++i) {
        if (s[i] > maxim) {
            maxim = s[i];
            incep_maxim = inceput[i];
            sf_maxim = i;
        }
    }

    fout << maxim << ' ' << incep_maxim + 1
         << ' ' << sf_maxim + 1 << endl;

    return 0;
}