A ja się nie zgodzę z resztą. SPOJa warto rozwiązywać gdy się pozna całkiem dobrze język i parę jakiś małych projektów się napisze. Dlaczego? Przy małej znajomości języka i programowania ogółem rozwiązywanie zadań na SPOJu będzie niekończącą się frustracją. Większość zadań tam ma taki problem, że nie podaje trafnych przykładowych liczb. I w nasz program będzie działał dla każdego przykładowego wejścia z zadania, a sędzia wywali błąd bez jakiegokolwiek wytłumaczenia.
Przykład:
http://pl.spoj.com/problems/PA05_POT/
Banalne liczby na wejściu, wszystko działa, a sędzia mówi, że błąd. I jak taka osoba, która dopiero się uczy ma to rozwiązać? Najprawdopodobniej nie zdaje sobie nawet sprawy, że potęgując dwie, nawet niewielkie liczby, można wyjść poza zakres inta. A jak zdaje sobie sprawę to użyje long long int czy innego tworu, ale nadal zadanie nie bedzie działać.
SPOJ dla początkującego to źródło frustracji i niepotrzebnego zniechęcenia. Proponuję solidnie ogarnąć język i zrobić kilka małych projektów, a potem się brać za algorytmy.
Inna sprawa to np. fakt, że niektóre zadania są absurdalnie nieproporcjonalne poziomem trudności.