Cod sursa(job #2652156)

Utilizator irimia_alexIrimia Alex irimia_alex Data 24 septembrie 2020 14:59:59
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

struct maxSum {
    int s, i, j;
};

maxSum ssm(vector<int>& v) {
    int n = v.size();
    int smax = 0, begin = 0, end = -1;
    int i = 0, s = v[0];
    for (int j = 1;j < n;++j) {
        s += v[j];
        while (s < 0) {
            s -= v[i++];
            if (s > smax) {
                smax = s;
                begin = i;
                end = j;
            }
        }
        if (s > smax) {
            smax = s;
            begin = i;
            end = j;
        }
    }
    return { smax,begin,end };
}

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

    int n;
    vector<int> v;
    fin >> n;
    while (n--) {
        int x;
        fin >> x;
        v.push_back(x);
    }

    maxSum r = ssm(v);
    fout << r.s << ' ' << r.i + 1 << ' ' << r.j + 1;

    return 0;
}