Pentru realizarea algoritmului am utilizat următoarele variabile:
- x, vector de 10 obiecte de tip structura cu doi întregi pentru câmpuri, pentru fiecare cifră de la 0 la 9, pentru care am alocat 10*2*4=80 de octeți (în dreptul fiecărei poziții din vector am păstrat: pentru st (stânga) indicele șirului citit din fișier unde apare prima dată indicele cifră, iar pentru dr (dreapta) indicele șirului citit din fișier unde apare ultima dată indicele cifră);
- n, de tip întreg, pentru care am alocat 4 octeți (cu ea am determinat indicii șirului citit din fișier, iar ulterior cifra de la 0 la 9 care are cel mai lung șir);
- a, de tip întreg, pentru care am alocat 4 octeți (cu ea am parcurs elementele șirului din fișier pe care le-am încărcat în vectorul x, iar pe final am parcurs acest vector cu această variabilă).
În concluzie, variabilele folosite utilizează o memorie de 80+4+4=88 de octeți, de unde rezultă EFICIENTA UTILIZĂRII MEMORIEI (pe lângă variabila utilizată pentru fișier).

În prima parte a algoritmului am declarat structura, variabilele în exteriorul funcției main, ca programul să inițializeze automat cu 0 valorile declarate. Pentru fiecare cifră a citită din fișier, am inițializat/atribuit valoarea indicelui n din șirul din fișier pentru poziția a din x, fie st (stânga) dacă a fost 0 în x (adică dacă a fost prima apariție a cifrei în fișier), fie dr (dreapta) dacă a fost ultima apariție a cifrei în fișier, tot în x.
Am continuat cu utilizarea lui n pentru poziția din x care are cea mai mare diferență între dr și st, iar cu a am parcurs valorile cifrelor: 0..9.
La final se afișează st și dr, ca diferență maximală din vectorul x, pentru indicele găsit mai sus n.
Citirea am realizat-o așa cum s-a cerut din fișierul <bac.in>.
În acest fel am EFICIENTIZAT TIMPUL DE EXECUȚIE, algoritmul fiind unul liniar, complexitatea algoritmului fiind maxim 2*N+1+10 (unde N este numărul de valori din fișier), adică 2*N+11 = O(N), de unde rezultă liniaritatea algoritmului.