Cod sursa(job #3215230)

Utilizator andreipirjol5Andrei Pirjol andreipirjol5 Data 14 martie 2024 19:13:21
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>

using namespace std;

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

const int NMAX = 6 * (1e6);
int v[NMAX + 5];

int main()
{
    int n;
    fin >> n;

    for(int i = 1; i <= n; i++)
        fin >> v[i];

    int st, fini = 0, start = 0, finish = 0;
    long long s = 0, maxim = INT_MIN;

    for(int i = 1; i <= n; i++)
    {
        if(s + v[i] < v[i])
        {
            st = i;
            s = v[i];
        }
        else
        {
            s += v[i];
            fini = i;
        }

        if(maxim < s)
        {
            start = st;
            finish = fini;
            maxim = s;
        }
        else if(maxim == s)
        {
            if(fini - st < finish - start)
            {
                start = st;
                finish = fini;
            }
        }
    }

    fout << maxim << ' ' << start << ' ' << finish;

    fin.close();
    fout.close();
    return 0;
}