Cod sursa(job #2197396)

Utilizator benjamin2205Zeic Beniamin benjamin2205 Data 21 aprilie 2018 23:02:11
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.4 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 = 0;
    int index = 0;

    cout << sumaMaxima << "\n\n\n";
    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];

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

//        cout << i << ' ';
//        cout << sumaMaxima << ' ' << index << '\n';
    }

    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] << ' ';
    }
}