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.
AntiEaglesDavids:
....ummm de ce nu iei cele mai mari 3 numere din sir si le inmultesti?
Răspunsuri la întrebare
Răspuns de
1
#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;
}
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;
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă