Cod sursa(job #2704547)

Utilizator EusebiudistrugatorulLionel Messi Eusebiudistrugatorul Data 10 februarie 2021 19:25:48
Problema Subsecventa de suma maxima Scor 75
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");

int v[6000001], sum[6000001], sum_min[6000001];
int main() {
    int n, sum_max = -1000000000, left, right;
    fin >> n;
    for (int i = 1; i <= n; ++i) {
        fin >> v[i];
        sum[i] += sum[i - 1] + v[i];
        sum_min[i] = min(sum_min[i - 1], sum[i - 1]);
        if (sum_min[i - 1] > sum[i - 1]) {
            v[i] = i;
        } else {
            v[i] = v[i - 1];
        }
    }
    for (int i = 1; i <= n; ++i) {
        if (sum[i] - sum_min[i] > sum_max) {
            sum_max = sum[i] - sum_min[i];
            right = i;
            left = v[i];
        }
    }
    fout << sum_max << ' ' << left << ' ' << right;
    return 0;
}