Pentru realizarea algoritmului am utilizat următoarele variabile:
- x - valoarea citită din fișier, pentru care am alocat 2 octeți;
- p - produsul unei secvențe la un moment dat (de fapt număr câte valori de 2 sunt în secvență), pentru care am alocat 4 octeți;
- pm - produsul maxim al unei secvențe (de faptul numărul maxim de valori de 2 dintre toate secvențele până la poziția curentă), pentru care am alocat 4 octeți;
- lm - lungimea secvenței de produs maxim, pentru care am alocat 4 octeți;
- i - poziția de unde începe seria curentă, pentru care am alocat 4 octeți;
- im - poziția de unde începe seria de produs maxim, pentru care am alocat 4 octeți;
- j - poziția curentă a valorii citite, pentru care am alocat 4 octeți.
În concluzie, variabilele folosite utilizează o memorie de 2+6*4=26 de octeți, de unde rezultă EFICIENȚA UTILIZĂRII MEMORIEI (pe lângă variabila utilizată pentru fișier).

Declarăm variabilele, cu inițializarea lui p cu -1. Algoritmul începe prin citirea valorilor 0, 1 sau 2 din fișier în variabila x, după declararea variabilelor. Pentru fiecare valoarea citită, incrementăm j (poziția noului x citit). 
Dacă valoarea citită este 0, verificăm dacă până la întâlnirea acestei valori, p (numărul de 2 din secvența curentă) este mai mare decât maximul întâlnit până la secvența curentă - pm), actualizând - în caz afirmativ - valorile lm, im, pm și p cu noile valori.
Începem cu p (numărul de valori de 2 din secvența curentă) cu valoarea 0. Dacă întâlnim doar valori de 1 în secvența curentă, p - la final - va avea valoarea 1. În cazul în care întâlnim un singur 2, duc p la 1, după care doar o incrementez pentru fiecare alt 2 apărut în secvența curentă, în caz contrar ea rămânând 1. Pentru fiecare nouă valoare x nulă citită, în cazul în care p<=pm, actualizez i cu j, iar pe devine 0.
Pentru fiecare număr nou diferit de 0 citit în cadrul secvenței curente, cresc lungimea șirului curent j, cu 1.
La final afișez valorile calculate, respectiv lm și im.
Î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) = O(N), de unde rezultă liniaritatea algoritmului.