Cod sursa(job #2983493)

Utilizator coso2312Cosmin Bucur coso2312 Data 22 februarie 2023 15:52:15
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const int MAX_LENGTH = 6000000;
const int MAXIM = 5000000000;

int n, v[MAX_LENGTH + 1], sp[MAX_LENGTH + 1];

int main() {
    fin >> n;
    for (int i = 1; i <= n; ++i) {
        fin >> v[i];
    }
    long long maxim = -MAXIM, minim = MAXIM, max_dif = -MAXIM, idx;
    int max_pos = 0, min_pos = 0;
    for (int i = 1; i <= n; ++i) {
        sp[i] = sp[i - 1] + v[i];
    }
    for (int i = 0; i <= n; ++i) {
        if (sp[i] < minim) {
            minim = sp[i];
            idx = i;
        }
        if (sp[i] - minim > max_dif) {
            max_dif = sp[i] - minim;
            max_pos = i;
            min_pos = idx + 1;
        }
    }
    fout << sp[max_pos] - sp[min_pos - 1] << " " << min_pos << " " << max_pos;
    return 0;
}