Pentru realizarea algoritmului am utilizat următoarele variabile:
- a, un vector (de frecvență) de întregi, în care punem 1 în dreptul numerelor de 2 cifre care apar în șir (inițial am pus automat 0 fiind în afara funcției main), pentru care am alocat 100*2=200 de octeți;
- x, un întreg, prin intermediul căreia am citit valorile din fișierul dat, pentru care am alocat 4 octeți;
- ulterior am refolosit x pentru parcurgerea valorilor din intervalul [10,99].
În concluzie, variabilele folosite utilizează o memorie de 200+4=204 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, am citit din fișier valorile în x și pentru fiecare x citit din intervalul [10,99] am marcat în vector valoarea 1.
Imediat după citirea tuturor numerelor din fișier, parcurgem vectorul în ordine descrescătoare în intervalul [10,99], iar pentru fiecare valoare din vector verificăm dacă ea nu a fost citită din fișier (dacă a[x]=0). În cazul în care nu a fost citită, adică a[x]=0 și cele două cifre ale lui x sunt diferite, afișăm valoarea în cauză, după care oprim forțat ciclul prin atribuirea unei valori lui x din afara intervalului indicat, respectiv 0. Dacă în intervalul indicat toate valorile sunt 1 (toate valorile de 2 cifre există și au fost citite din fișier), atunci x iese din ciclu cu valoarea 9, caz în care nu am găsit niciun număr indicat, prin urmare afișăm mesajul "nu exista".
Complexitatea algoritmului este N (rezultat din citirea valorilor din fișier) + maxim 90 de căutări în intervalul [10,99], prin urmare complexitatea algoritmului este O(N+90)=O(N).
EFICIENTIZAREA TIMPULUI DE EXECUȚIE constă în liniaritatea algoritmului, complexitatea ajungând la O(N).