Cod sursa(job #2848381)

Utilizator Teodor11Posea Teodor Teodor11 Data 12 februarie 2022 14:46:12
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
using namespace std;

int n, st, dr, v[6000001], s[6000001];

int main() {
    ifstream fin("ssm.in");
    ofstream fout("ssm.out");
    fin >> n;
    for (int i = 1; i <= n; ++i) {
        fin >> v[i];
        s[i] = s[i - 1] + v[i];
        s[0] = min(s[0], s[i]);
    }
    fout << s[0] << endl;
    for (int i = n; i > 0; --i) {
        if (s[0] <= s[i] && v[i] >= v[dr]) {
            s[0] = s[i];
            dr = i;
        }
    }
    st = dr;
    for (int i = dr; i > 0; --i) {
        if (s[0] > s[i] || (v[i] < v[st] && s[0] == s[i])) {
            s[0] = s[i];
            st = i;
        }
    }
    fout << s[dr] - s[st++] << ' ' << st << ' ' << dr;
    return 0;
}