Cod sursa(job #2097637)

Utilizator PondorastiAlex Turcanu Pondorasti Data 1 ianuarie 2018 00:35:18
Problema Subsecventa de suma maxima Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#include <stack>
#include <algorithm>
#include <vector>

using namespace std;

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

const int NMAX = 6e6;
int a[NMAX + 2], dp[NMAX + 2], n;

int main() {
    in >> n;
    for (int i = 1; i <= n; ++i) {
        in >> a[i];
        dp[i] = dp[i - 1] + a[i];
    }
    int best = dp[1], worst = 0, first = 1, sum, last;
    for (int i = 1; i <= n; ++i) {
        sum = dp[i] - dp[first - 1];
        if (sum > best) {
            best = sum;
            last = i;
        }
        if (sum < worst) {
            worst = sum;
            first = i + 1;
        }
    }
    out << best << " " << first << " " << last << "\n";
    return 0;
}