Cod sursa(job #2792100)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 31 octombrie 2021 21:45:03
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>

using namespace std;

/// a doua metoda, aia mai putin evidenta, care de fapt se bazeaza
/// pe dinamica, dar o simplifica mult, eliminand vectorii aia
/// 2 in plus si astfel intra in memorie

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

    int sumaCrt, sumaMax;
    int st, dr, stMax, drMax;

    int n;
    in >> n;

    int x;
    in >> x;

    sumaMax = x;
    stMax = 1;
    drMax = 1;
    sumaCrt = x;
    st = 1;
    for (int i = 2; i <= n; i++)
    {
        in >> x;
        sumaCrt = sumaCrt + x;

        if(sumaCrt > sumaMax)
        {
            sumaMax = sumaCrt;
            stMax = st;
            drMax = i;
        }
        if(sumaCrt < 0)
        {
            sumaCrt = 0;
            st = i+1;
            dr = i+1;
        }
    }

    out << sumaMax << ' ' << stMax << ' ' << drMax << '\n';

    return 0;
}