Cod sursa(job #2964975)

Utilizator constantiniu_mateiConstantiniu Matei constantiniu_matei Data 14 ianuarie 2023 10:59:53
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>

using namespace std;
int N, in, f, inb, fb, v[6000000], b[6000000], MAX;
int main()
{
    cin >> N;
    for(int i = 0; i < N; i++)
    {
        cin >> v[i];
    }
    b[0] = v[0];
    in = 1;
    MAX = v[0];
    for(int i = 1; i < N; i++)
    {
        b[i] = max(b[i - 1] + v[i], v[i]);
        if(v[i] > b[i - 1] + v[i])
            in = i + 1;
        f = i + 1;
        if(b[i] > MAX)
        {
            MAX = b[i];

            inb = in;
            fb = f;
        }
        if(b[i] == MAX)
        {
            if(in < inb)
            {
                MAX = b[i];

                inb = in;
                fb = f;
            }
            else if(in == inb)
            {
                if(fb - inb > f - in)
                {

                    inb = in;
                    fb = f;
                    MAX = b[i];
                }
            }
        }

    }
    cout << MAX << ' ' << inb << ' ' << fb;
    return 0;
}