Cod sursa(job #3317203)

Utilizator risxdrzBanica Albert risxdrz Data 22 octombrie 2025 18:12:34
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <climits>
using namespace std;

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

    int N;
    fin >> N;
    vector<int> S(N + 1);

    for (int i = 1; i <= N; i++)
        fin >> S[i];

    int cur_sum = S[1];
    int max_sum = S[1];
    int start_curent = 1;
    int best_start = 1, best_end = 1;

    for (int i = 2; i <= N; i++) {
        // dacă elementul curent e mai mare decât suma anterioară + el, încep o nouă subsecvență
        if (S[i] > cur_sum + S[i]) {
            cur_sum = S[i];
            start_curent = i;
        } else {
            cur_sum += S[i];
        }

        // dacă am găsit o sumă mai mare, o salvez
        if (cur_sum > max_sum) {
            max_sum = cur_sum;
            best_start = start_curent;
            best_end = i;
        }
    }

    fout << max_sum << " " << best_start << " " << best_end << "\n";
    return 0;
}