Witam, chciałbym poprosić o pomoc w zadaniu; zrobiłem zadanie domowe, lecz robot sprawdzający daje tylko 30%. Mam prośbę do osób, które znają się na programowaniu dosyć długo, algorytmikę znają bardzo dobrze, może ja robię jakiś błąd?
Treść zadania:
Niżej zamieszczam kod źródłowy mojej pracy:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n; cin>>n;
int *tab=new int [n];
for(int i=0; i<n; i++)
cin>>tab[i];
sort(tab,tab+n);
int a=tab[0],b=tab[1],c=tab[2];
int d=tab[n-3],e=tab[n-2],f=tab[n-1];
cout<<max(a*b*f,d*e*f);
delete [] tab;
}
W razie jakby ktoś nie rozumiał linii wypisującej wynik, podpowiem, iż gdy posortuję tablicę, to na indeksach początkowych mogą znaleźć się liczby ujemne, a co za tym idzie wymnożenie dwóch największych liczb ujemnych liczb oraz jednej największej dodatniej z całego zbioru uczyni iloczyn największym. Kiedy nie mamy liczb ujemnych wymnażamy 3 ostatnie (największe po posortowaniu) liczby.
Na końcu daję Wam to, co robot sprawdzający wypisuje po otrzymaniu mojego kodu: