Jeżeli Twoim celem jest oszczędzenie pamięci to oczywiście zmienia postać rzeczy i może nawet lista jest dobrym rozwiązaniem (nie chce mi się nad tym myśleć). Nad czym myśleć? Nie wiem jak Twoje rozumowanie ma się do wady listy, że każdy element listy ciągnie więcej pamięci niż każdy element tablicy
Mam też pewną obawę (z tego co widzę w kodzie całkiem zasadną), że w swoim rozwiązaniu używasz w cholerę pamięci w porównaniu ze zwykłą tablicą około 50-elementową
Pomijam już kwestię sortowania, które nie jest potrzebne w przypadku tablicy, a kosztuje czasowo dość wiele.
Powiem tak - w celach edukacyjnych można wiele. Sam pamiętam zadanie, nad którym nie chciało mi się myśleć więc kilka z możliwych rozwiązań zabrałem z neta a resztę liczyłem na bieżąco w trakcie wykonywania programu
Nota bene kultowa technika w konkursach algorytmicznych, której nazwę możesz sobie wygooglować, a która jest kluczem do rozwiązania niektórych zadań na SPOJu, a rozwiązanie innych ułatwia.
W celach dydaktycznych możesz spróbować ogarnąć to zadanie na mapach/setach. Wybór właściwego kontenera z wymienionych zostawiam Tobie.
Można stworzyć nawet mniejszy o tym samym działaniu. Program dostaje TLE ponieważ najpewniej nie wychodzisz z pętli i wykonujesz go w nieskończoność.