Dacă nu ai voie să rearanjezi elementele citite, atunci ai putea folosi un vector auxiliar de produse. În respectivul vector vei pune rezultatul înmulțirii a 2 elemente vecine din vectorul tău inițial.
De exemplu, pentru datele tale, vom avea noul vector
v cu următoarele valori :
- v[0] = 4 * 7 = 28;
- v[1] = 7 * 1 = 7;
- v[2] = 1 * 5 = 5;
- v[3] = 5 * 3 = 15;
Din vectorul respectiv, alegi cele mai mari 2 elemente și interpretezi semnele ce trebuie să le pui în felul urmățor : fiind un vector de produse de 2 elemente vecine, cele mai mari 2 valori vor fi înlocuite cu * (produs), iar restul vor fi înlocuite cu + (sumă).
În felul acesta, avem următoarele semne :
- v[0] = 28 (maxim 1) => *
- v[1] = 7 => +
- v[2] = 5 => +
- v[3] = 15 (maxim 2) => *
Iei noile semne, le intercalezi cu vectorul tău inițial, rezolvi ecuația și-ți ai rezultatul.
Desigur, algoritmul poate fi puternic optimizat. Se poate aborda o
metodă greedy în care să se elimine cu totul vectorul
v și să se afle rezultatul final încă din bucla de citire a celor
n elemente, dar asta presupune o stăpânire desăvârșită a logicii și o înțelegere elementară a conceptului de bază (cel enunțat mai sus). Ai putea chiar tu să încerci (și să nu te dai bătut decât atunci când reușești) să simplifici algoritmul propus, acum, că știi că se poate. Câștigul, vei vedea, va fi mai valoros decât niște puncte obținute într-un concurs.
Spor