Cod sursa(job #3238039)

Utilizator al3x.unxUngureanu Alex al3x.unx Data 15 iulie 2024 19:05:42
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
using namespace std;

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

int sir[6000005] = {0};
int sp[6000005] = {0};

int main() {
    int n;
    fin >> n;

    for (int i = 1; i <= n; i++) {
        fin >> sir[i];
    }

    for (int i = 1; i <= n; i++) {
        sp[i] = sp[i - 1] + sir[i];
    }

    int smax = 0;
    int st = 1;
    int dr = 1;
    int j = 1;

    for (int i = 1; i < n; i++) {
        if (sp[i] > sp[dr]) {
            dr = i;

            while (j < i) {
                if (sp[j - 1] < sp[st - 1]) {
                    st = j;
                    break;
                }

                j++;
            }
        }

        smax = sp[dr] - sp[st - 1];
    }

    while (j <= n) {
        if (sp[n] - sp[j - 1] > smax) {
            st = j;
            smax = sp[n] - sp[j - 1];
        }

        j++;
    }

    fout << smax << '\n' << st << ' ' << dr;
}