Cod sursa(job #3345479)

Utilizator dariacntConstantinescu Daria dariacnt Data 9 martie 2026 19:18:23
Problema Subsecventa de suma maxima Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <vector>
#include <climits>

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

int main() {
    int n;
    fin >> n;
    vector<int> v(n + 1);
    vector<int> dp(n + 1);
    vector<int> start_pos(n + 1);

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

    dp[1] = v[1];
    start_pos[1] = 1;

    int suma_maxima = 0;
    int best_start = 1;
    int best_end = 1;

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

        if(dp[i] > suma_maxima) {
            suma_maxima = dp[i];
            best_start = start_pos[i];
            best_end = i;
        }
    }

    fout << suma_maxima << " " << best_start << " " << best_end << "\n";
    return 0;

}