👤

Produs maxim
Se consideră un șir x cu n (3 ≤ n ≤ 10 000) elemente numere întregi mai mari decât -30 000 și mai mici
decât 30 000.
Scrieți un subalgoritm care determină trei elemente din șirul x al căror produs este maxim. Parametrii de
intrare ai subalgoritmului sunt n și x, iar cei de ieșire vor fi a, b și c, reprezentând trei elemente din șirul x,
având proprietatea cerută. Dacă problema are mai multe soluții, determinați una singură.
Exemplu: dacă n = 10 și x = (3, -5, 0, 5, 2, -1, 0, 1, 6, 8), cele trei numere sunt: a = 5, b = 6, c = 8

Eu m-am gandit ca s-ar putea rezolva prin inmultirea elementelor tuturor submultimilor de 3 cifre dar nu stiu cum as putea face acest lucru.


Răspuns :

#include <bits/stdc++.h>
using namespace std;

constexpr unsigned NMax = 10005;
constexpr short NrMin = -30001;

short x;
int n, a, b, c, sol = 1;
deque<short> maxime({NrMin, NrMin, NrMin});

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> x;
        if(x > maxime.front()) {
            maxime.pop_back();
            maxime.push_front(x);
        }
    }

    while(!maxime.empty()) {
        cout <<  maxime.front() << ' ';
        maxime.pop_front();
    }

    return 0;
}