Cod sursa(job #2197392)

Utilizator benjamin2205Zeic Beniamin benjamin2205 Data 21 aprilie 2018 22:49:46
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <bits/stdc++.h>

using namespace std;

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

int n;
int sir[6000005];

void citire();
void afisare();

void rezolvare() {
    int sumaMaxima = INT_MIN;
    int start, stop;
    int minim = INT_MAX;
    int index;

    for (int i = 1; i <= n; ++i) {
        /// Se formeaza vectorul de sume partiale peste
        /// cel anterior existent, care era doar vector de valori
        sir[i] += sir[i - 1];

        if (minim > sir[i]) {
            minim = sir[i];
            index = i;
        }
        /// Daca din elementul curent se scade valoarea minima obtinuta
        /// pana acum prin cautarea in sir
        if (sir[i] - minim > sumaMaxima) {
            sumaMaxima = sir[i] - minim;
            start = index + 1;
            stop = i;
        }
    }

    g << sumaMaxima << ' ';

    g << start << ' ' << stop << '\n';

    ///afisare();
}

int main()
{
    citire();
    //afisare();
    rezolvare();
    return 0;
}

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

void afisare() {
    for (int i = 1; i <= n; ++i) {
        g << sir[i] << ' ';
    }
}