Cod sursa(job #2817754)

Utilizator AlexNeaguAlexandru AlexNeagu Data 14 decembrie 2021 10:04:54
Problema Subsecventa de suma maxima Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include<bits/stdc++.h>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
int main() {

    int N;
    in >> N;
    long long a[N], dp[N], deUnde[N];
    for(int i = 0; i < N; ++i) {
        in >> a[i];
    }

    dp[0] = a[0];
    deUnde[0] = 0;
    for(int i = 1; i < N; ++i) {
        if(dp[i - 1] + a[i] >= a[i]) {
            deUnde[i] = deUnde[i - 1];
            dp[i] = dp[i - 1] + a[i];
        } else {
            deUnde[i] = i;
            dp[i] = a[i];
        }
    }
    long long answer = -2e18, R;
    for(int i = 0; i < N; ++i) {
        if(dp[i] > answer) {
            R = i;
            answer = dp[i];
        }
    }
    out << answer << ' ' << deUnde[R] + 1 << ' ' << R + 1 << '\n';

}