Cod sursa(job #3259083)

Utilizator dimuDImulescu Luca dimu Data 25 noiembrie 2024 08:46:45
Problema Subsecventa de suma maxima Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");

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

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

    long long maxi = v[1];
    int start = 1, end = 1, tempStart = 1;
    dp[1] = v[1]; // Inițializare pentru primul element

    for (int i = 2; i <= n; i++) {
        if (dp[i - 1] + v[i] > v[i]) {
            dp[i] = dp[i - 1] + v[i];
        } else {
            dp[i] = v[i];
            tempStart = i; // Începem o nouă subsecvență
        }

        if (dp[i] > maxi) {
            maxi = dp[i];
            start = tempStart;
            end = i;
        }
    }

    fout << maxi << ' ' << start << ' ' << end;
    return 0;
}