Pentru realizarea algoritmului am utilizat următoarele variabile:
- n3,n2,n1, câte un întreg, pe postul fiecăreia din cele 3 numere - cele mai mici, care se termină în 24, pentru care am alocat 3*4=12 octeți; (ordinea lor crescătoare am stabilit-o astfel: n1<n2<n3);
- x, un întreg, pentru citirea tuturor numerelor din fișierul <bac.in>, pentru care am alocat 4 octeți.
În concluzie, variabilele folosite utilizează o memorie de 4*4=16 octeți, de unde rezultă EFICIENȚA UTILIZĂRII MEMORIEI (pe lângă variabila utilizată pentru fișier).

În prima parte a algoritmului, după declararea variabilelor global, citesc in fișierul dat câte un număr.
Declararea variabilelor global implică inițializarea lor cu 0.
După citirea lui x, verificăm dacă numărul se termină în 24.
Dacă numărul se termină în 24, verific dacă n1 este 0 sau, dacă nu e 0, dar e mai mare ca x, atunci fiecare valoare mai mare, preia valorile mai mici, n3 va fi vechiul n2, n2 va fi vechiul n1, iar noul n1 va fi x.
Idem procedăm și pe ramura altfel (x>n1), comparând x cu n2 (în aceleași condiții), modificarea valorilor fiind acum noul n3 va fi vechiul n2, iar noul n2 va fi x.
Idem și pe ramura altfel de aici (x>n2), în aceleași condiții între x și n3, caz în care noul n3 cva fi x-ul citit.
Pașii se repetă atâta timp cât mai există numere în fișier.
La final, închid fișierul deschis inițial, după care afișez valorile calculate, în ordinea precizată de problemă.
Complexitatea algoritmului este N (numărul de elemente din fișier) = O(N).
EFICIENTIZAREA TIMPULUI DE EXECUȚIE constă în liniaritatea algoritmului (toate valorile sunt parurse o singură dată), complexitatea ajungând la N.