Cod sursa(job #3309130)

Utilizator NICO_Gavris Matei Nicolae NICO_ Data 1 septembrie 2025 16:44:24
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>//DINAMICAAAA SSM
using namespace std;

int v[1 + 6000000], dp[1 + 6000000];

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

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

    dp[1] = v[1];
    int summax = v[1];
    int stcur = 1, stmax = 1, endmax = 1;

    for (int i = 2; i <= n; i++)
    {
        if (dp[i - 1] + v[i] < v[i])
        {
            dp[i] = v[i];
            stcur = i;
        }
        else
        {
            dp[i] = dp[i - 1] + v[i];
        }

        if (dp[i] > summax ||
            (dp[i] == summax && stcur < stmax) ||
            (dp[i] == summax && stcur == stmax && i - stcur < endmax - stmax))
        {
            summax = dp[i];
            stmax = stcur;
            endmax = i;
        }
    }

    fout << summax << " " << stmax << " " << endmax << "\n";
    return 0;
}