Cod sursa(job #2926541)

Utilizator victor_gabrielVictor Tene victor_gabriel Data 17 octombrie 2022 22:26:51
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <climits>

using namespace std;

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

const int DIM = 6000001;
int n, x, top = 0;
int s[DIM], st[DIM];

int main() {
    fin >> n;
    for (int i = 1; i <= n; i++) {
        fin >> x;
        s[i] = s[i - 1] + x;
    }

    int sumMax = INT_MIN, posI = 0, posJ = 0;
    for (int i = n; i >= 1; i--) {
        while (top > 0 && s[i] >= s[st[top]])
            top--;
        st[++top] = i;

        int crtSum = s[st[1]] - s[i - 1];
        if (crtSum > sumMax) {
            sumMax = crtSum;
            posI = i, posJ = st[1];
        }
    }

    fout << sumMax << ' ' << posI << ' ' << posJ;

    return 0;
}