Cod sursa(job #2726510)

Utilizator AlexZeuVasile Alexandru AlexZeu Data 21 martie 2021 09:22:48
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>
using namespace std;

int n, x, dp[6000100], minim;

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

int main() {
    fin.tie(0);
    ios::sync_with_stdio(0);
    int n, x;
    fin >> n >> x;
    dp[1] = x;
    for (int i = 2; i <= n; ++i) {
        fin >> x;
        dp[i] = dp[i - 1] + x;
    }
    int beg, end, BEG, END;
    if (min(dp[1], dp[2]) == dp[1]) {
            minim = dp[1];
            beg = 1;
    }
    else {
        minim = dp[2];
        beg = 2;
    }
    int best_sum = INT_MIN;
    for (int dr = 3; dr <= n; ++dr) {
        int sum = dp[dr] - minim;
        if (sum > best_sum) {
            best_sum = sum;
            BEG = beg;
            END = dr;
        }
        if (minim > dp[dr]) {
            minim = dp[dr];
            beg = dr;
        }
    }
    fout << BEG + 1 << " " << END << " " << best_sum;
    return 0;
}