Cod sursa(job #2257142)

Utilizator vladm98Munteanu Vlad vladm98 Data 9 octombrie 2018 18:30:12
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

int main()
{
    ifstream fin ("ssm.in");
    ofstream fout ("ssm.out");
    int n, indiceStart = 1, indiceStartBest, indiceFinishBest;
    long long currentBestSum = 0, currentBest = -1000000000;

    ///currentBestSum -> retine subsecventa de suma maxima care se termina la poz curenta
    fin >> n;
    for (int i = 1; i <= n; ++i) {
        long long currentSum;
        fin >> currentSum;
        if (currentBestSum >= 0) { ///pana la poz i - 1 am o suma pozitiva
            currentSum += currentBestSum;
        }
        else {
            indiceStart = i;
        }
        if (currentBest < currentSum) {
            currentBest = currentSum;
            indiceStartBest = indiceStart;
            indiceFinishBest = i;
        }
        currentBestSum = currentSum;
    }
    fout << currentBest << ' ' << indiceStartBest << ' ' << indiceFinishBest;
    return 0;
}

/// valori: 2 1 5 -10  5   6
/// CBS   : 0 2 3  8  -2   5
/// CS    : 2 3 8  -2  5   11

///CB = 11