Cod sursa(job #3345478)

Utilizator inocmIon Butura inocm Data 9 martie 2026 19:17:17
Problema Subsecventa de suma maxima Scor 75
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <algorithm>
#include <fstream>
#include <iostream>
#include <memory>
#include <vector>
using namespace std;

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

int main() {
    int n, start;
    vector<int> v, dp, index;
    fin >> n;
    v.resize(n + 1);
    dp.resize(n + 1);
    index.resize(n + 1);
    for (int i = 1; i <= n; i++) {
        fin >> v[i];
    }

    dp[1] = v[1];
    start = 1;

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

    int maxx = dp[1];
    int end = 1;
    for (int i = 2; i <= n; i++) {
        if (dp[i] > maxx) {
            maxx = dp[i];
            start = index[i];
            end = i;
        }
    }

    fout << maxx << " " << start << " " << end;

    return 0;
}