Pentru realizarea algoritmului am utilizat următoarele variabile:
- a, vector de frecvență pentru valorile de la 1 la 1000, declarat de 1001, în care contorizăm în dreptul fiecărei poziții numărul de apariții ale poziției în fișier, pentru care am alocat 1001*4=4004 octeți;
- x, variabila de tip short, prin intermediul ei am citit valorile din fișier și am actualizat frecvența lui x în vector, pentru care am alocat 2 octeți;
- de asemenea, cu x am parcurs și vectorul a de la 1 la 1000 pentru verificarea parității în pozițiile în care vectorul are valori diferite de 0; dacă iese din ciclu cu valoarea 1001 înseamnă că a verificat tot șirul și paritățile se potrivesc conform cerinței.
În concluzie, variabilele folosite utilizează o memorie de 4004+2=4006 octeți, de unde rezultă EFICIENȚA UTILIZĂRII MEMORIEI (pe lângă variabila utilizată pentru fișier).

În prima parte a algoritmului am citit valorile x din fișier (după declararea variabilelor) și am incrementat cu 1 a[x], la fiecare apariție a lui x în fișierul <bac.in>.
Am verificat pentru valorile din vector diferite de 0, corespondența parităților dintre poziție și valoarea din vector. Dacă x iese din ciclu cu 1001, înseamnă că toate valorile corespund, dacă iese cu o altă valoare din intervalul [1,1000], înseamnă că acea valoare nu are corespondență.
În acest fel, am EFICIENTIZAT TIMPUL DE EXECUȚIE, algoritmul fiind unul liniar, complexitatea algoritmului fiind maxim N+1000 (unde N este numărul de valori din fișier) = O(N), de unde rezultă liniaritatea algoritmului.