Cod sursa(job #2657398)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 10 octombrie 2020 14:23:23
Problema Subsecventa de suma maxima Scor 75
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

    int n;
    fin >> n;

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

    vector<pair<int,int>> m(n);

    m[0].first = s[0];
    m[0].second = 0;

    for (int i = 1; i < n; ++i) {
        if (s[i] > m[i-1].first + s[i]) {
            m[i].first = s[i];
            m[i].second = i;
        }
        else {
            m[i].first = m[i-1].first + s[i];
            m[i].second = m[i-1].second;
        }

    }

    int max_ind = 0;

    for (int i = 1; i < n; ++i) {
        if (m[i].first > m[max_ind].first) {
           max_ind = i;
        }
    }


    fout << m[max_ind].first << ' '
        << m[max_ind].second+1 << ' '
        << max_ind+1 << endl;

    return 0;
}