Cod sursa(job #2928344)

Utilizator al3x.unxUngureanu Alex al3x.unx Data 22 octombrie 2022 19:39:56
Problema Subsecventa de suma maxima Scor 85
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <limits.h>
using namespace std;

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

#define LEN 6000005
int S[LEN] = {0}, sp[LEN] = {0};

int main() {
    int x = 0, n = 0, suma = 0, pozi = 0, pozj = 0, smax = INT_MIN, spmin = INT_MAX;
    in >> n;

    for (int i = 1; i <= n; i++) {
        in >> S[i];
        //Generam sumele partiale asociate sirului
        x += S[i];
        sp[i] = x;
    }

    //Pentru fiecare j din [1, n], caut cea mai mica suma partiala cu pozitia < j (daca am o astfel de sp, atunci am si o smax cadidat)

    for (int j = 1; j <= n; j++) {
        if (sp[j] < spmin) {
            spmin = sp[j];
            pozi = j + 1;
        }

        int suma = sp[j] - spmin;

        if(suma > smax) {
            smax = suma;
            pozj = j;
        }
    }

    out << smax << ' ' << pozi << ' ' << pozj;

    in.close();
    out.close();
}