Cod sursa(job #2965517)

Utilizator MAlex2019Melintioi George Alexandru MAlex2019 Data 15 ianuarie 2023 14:52:20
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
#include <queue>

using namespace std;

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

const int maxn = 6e6;
const int INF = 2147483647;
int v[maxn + 1];

int main() {
    int n;
    fin >> n;
    int maxi = -INF, pozmax = 0;
    for (int i = 1; i <= n; i++) {
        fin >> v[i];
        if (v[i] >= maxi) {
            maxi = v[i];
            pozmax = i;
        }
    }
    if (maxi <= 0) {
        fout << maxi << ' ' << pozmax << ' ' << pozmax << '\n';
        return 0;
    }

    queue<int> goolah;
    goolah.push(1);
    int sum = v[1], maxsum = -INF, start, end;
    for (int i = 2; i <= n; i++) {
        goolah.push(i);
        sum += v[i];
        while (sum < 0) {
            sum -= v[goolah.front()];
            goolah.pop();
        }
        if (sum > 0 && sum > maxsum) {
            maxsum = sum;
            start = goolah.front();
            end = i;
        }
    }

    fout << maxsum << ' ' << start << ' ' << end << '\n';

    return 0;
}