Cod sursa(job #1784833)

Utilizator relu.draganDragan Relu relu.dragan Data 20 octombrie 2016 15:50:31
Problema Subsecventa de suma maxima Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
int N;
vector<int> nrs;
ifstream in("ssm.in");
ofstream out("ssm.out");
void read_input()
{
    in >> N;
    nrs.resize(N);
    for (int i = 0; i < N; i++) {
       in >> nrs[i]; 
    }
}
void dyn_ssm()
{
    vector<int> dyn(N);
    vector<int> start(N);
    for (int i = 0; i < N; i++) {
        dyn[i] = nrs[i];
        start[i] = i;
    }
    int maxGlobalSum = dyn[0];
    int globalEndIdx = 0;
    for (int i = 1; i < N; i++) {
        if (dyn[i] < dyn[i - 1] + nrs[i]) {
            dyn[i] = dyn[i - 1] + nrs[i];
            start[i] = start[i - 1];
        }
        if (maxGlobalSum < dyn[i]) {
            maxGlobalSum = dyn[i];
            globalEndIdx = i;
        }
    }

    out << maxGlobalSum << " " << start[globalEndIdx] + 1 << " " << globalEndIdx + 1;


    

}
int main()
{
    read_input();
    dyn_ssm();
    return 0;
}