Cod sursa(job #3358858)

Utilizator LicaMihaiIonutLica Mihai- Ionut LicaMihaiIonut Data 20 iunie 2026 23:01:00
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include<iostream>
#include <fstream>
#include <vector>

using namespace std;

vector<int> v;
vector<int> dp;

int main(void) {
    ifstream f("ssm.in");
    ofstream g("ssm.out");

    int n;

    f >> n;

    v.resize(n);
    dp.assign(n, 0);

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

    dp[0] = v[0];

    for (int i = 1; i < n; i++) {
        dp[i] = max(v[i], dp[i - 1] + v[i]);
    }

    int max_index = 0;

    for (int i = 0; i < n; i++) {
        if (dp[max_index] < dp[i]) max_index = i;
    }

    int min_index = max_index;

    while (min_index >= 1 && dp[min_index] - v[min_index] == dp[min_index - 1]) {
        min_index--;
    }

    g  << dp[max_index] << ' ' << min_index + 1 << ' ' << max_index + 1;
    f.close();
    g.close();
    return 0;
}