Cod sursa(job #3303027)

Utilizator ZsomborZsombor Horvay Zsombor Data 12 iulie 2025 19:12:34
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>
#include <vector>
#include <climits>

using namespace std;

ifstream be("ssm.in");
ofstream ki("ssm.out");

void f(int n, const vector<int> &s)
{
    if(n == 1)
    {
        ki << s[0] << " " << 1 << " " << 1;

        return;
    }

    int jelenlegi, elozo, best = INT_MIN;
    jelenlegi = s[0];

    int kezdo_j = 0, veg_j = 0;
    int kezdo_e, veg_e;
    int best_k, best_v;

    for(int i = 1; i < n; i++)
    {
        elozo = jelenlegi;

        kezdo_e = kezdo_j;
        veg_e = veg_j;

        jelenlegi = max(s[i], s[i] + elozo);

        if(jelenlegi == s[i] && s[i] != s[i] + elozo)
        {
            kezdo_j = i;
        }else
        {
            kezdo_j = kezdo_e;
        }
        veg_j = i;

        best = max(jelenlegi, best);

        if(best == jelenlegi)
        {
            best_k = kezdo_j;
            best_v = veg_j;
        }
    }
    ki << best << " " << best_k + 1 << " " << best_v + 1;
}

int main()
{
    int n;
    be >> n;
    
    vector<int> s(n);

    for(int i = 0; i < n; i++)
    {
        be >> s[i];
    }

    vector<int> best(n);

    f(n, s);
    
    return 0;
}