Pentru realizarea algoritmului am utilizat următoarele variabile:
- a și b, doi vectori (de frecvență) de tip short - intervalul fiind [0,100), în care punem numărul de apariții a indicelui din vector în șirul a din, respectiv b din fișier, pentru care am alocat 100*2=200 de octeți;
- m și n, două variabile întregi, cu semnificația din enunț, pentru care am alocat 2*4=8 octeți;
- x, o variabilă de tip întreg pentru citirea valorilor lui a și a lui b din fișier, iar la final (după citire) am calculat valoarea cerută în ea, pentru care am alocat 4 octeți;
- sacadat o variabilă i, inițial de tip întreg, iar mai apoi de tip short, prin intermediul căreia am contorizat citirea valorilor din fișierul dat.
În concluzie, variabilele folosite utilizează o memorie minimă de 200+8+4=212 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 m și n, mai apoi șirul valorilor lui a (din enunț; la noi - în program a are rol de vector de frecvență - aici am numărat de fapt valorile a-ului din problemă), iar la final șirul valorilor lui b, cu aceeași semnificație, pentru că aceste valori sunt în intervalul [0,100).
După citire și actualizare valori din vectori, am reinițializat x cu 0 pentru a contoriza perechile, pe care nu e necesar să le afișăm, doar să le numărăm. Prin urmare, în x vom adăuga min(a[i],b[i]), întrucât așa putem constitui perechi de același indice.
Complexitatea algoritmului este 2 (citirea lui m și n) + M (citirea valorilor lui a) + N (citirea valorilor lui b) + 100 (contorizare perechi din intervalul [0,100)), prin urmare complexitatea algoritmului este O(2+m+n+100)=O(N).
EFICIENTIZAREA TIMPULUI DE EXECUȚIE constă în liniaritatea algoritmului, complexitatea ajungând la O(N).
