Cod sursa(job #3274908)

Utilizator mlupseLupse-Turpan Mircea mlupse Data 8 februarie 2025 13:21:24
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
const int NMax = 6000000;
int X[NMax + 5],N,Begin, End,Sol;
int DP[NMax + 5];
int main()
{
    fin >> N;
    for(int i = 1; i<= N; ++i)
        fin >> X[i];

    for(int i = 1; i <= N; ++i)
        DP[i] = max(X[i],X[i]+DP[i-1]);
    Sol = DP[1]; Begin = End = 1;
    for(int i = 1; i <= N; ++i)
    {
        if(DP[i] > Sol)
        {
            Sol = DP[i];
            End = i;
        }
    }
    int S = 0;
    for(int i = End; i >= 1; --i)
    {
        S = S + X[i];
        if(S == Sol)
        {
            Begin = i;
        }

    }


    fout << Sol << " " << Begin << " " << End <<"\n";

    return 0;
}