Pentru realizarea algoritmului am utilizat următoarele variabile:
- a, un vector cu valori de tip short pentru memorarea valorilor impare de două cifre care apar în <bac.txt>; fiind declarat în exteriorul funcției main(), acesta se actualizează cu valorile 0;
- M, o variabilă de tip short în care voi memora cel mai mare impar de 2 cifre care nu apare în fișier;
- m, o variabilă de tip întreg în care voi citi elementele din fișier, iar pentru valorile impare de 2 cifre pun în a[m/2] valoarea 1, iar ulterior pentru a depista cel mai mic impar de 2 cifre.
În concluzie, variabilele folosite utilizează o memorie de 50*2+2+4=106 octeți, de unde rezultă EFICIENTA UTILIZĂRII MEMORIEI (pe lângă variabila utilizată pentru fișier).

În prima parte a algoritmului am citit toate valorile din fișier, iar pentru fiecare impar m citit (m=2k+1), în vectorul a am marcat găsirea numărului impar de 2 cifre pe poziția k, dacă m-ul citit este în intervalul (9,100).
Pornind (crescător) de la m=5 (mai exact de la 2*5+1 până la 2*49+1), găsesc valoarea minimă de 2 cifre impară (2*m+1) care nu se regăsește în șir (a rămas 0, după marcarea valorilor citite).
Pornind (descrescător) de la M=49 (mai exact de la 2*49+1până la 2*5+1), găsesc valoarea maximă de 2 cifre impară (2*M+1) care nu se regăsește în șir (a rămas 0, după marcarea valorilor citite).
Dacă m<M (însemnând 2*m+1<2*M+1), deducem că am găsit cele două numere cerute, în caz contrar aceste numere "NU EXISTA".
În acest fel am EFICIENTIZAT TIMPUL DE EXECUȚIE, algoritmul fiind unul liniar, complexitatea algoritmului fiind maxim N (unde N este numărul de valori din fișier) + 100 = O(N) + C = O(N), de unde rezultă liniaritatea algoritmului.