Twój problem jest bardzo klasyczny - pewna rozbieżność między rozumowaniem ludzkim a sędziego i w ogóle SPOJa.
Zapewne wczytałeś pustą linię po słowie "kota". Otóż tej linii tam nie ma - została ona dodana tylko by oddzielić wejście od wyjścia. Twój program daje zatem wynik o 1 za mały:
https://ideone.com/BToA6j
Myślę, że naprawienie tego błędu nie będzie żadnym problemem
Po AC usuń kod.
A tak swoją drogą, to uwagi na przyszłość:
1. Lepiej dawać na końcu return 0; Nie wiem jak u innych, ale pamiętam, że raz czy dwa ta magiczna linia zamieniła WA w AC.
2. Popraw formatowanie kodu - jest nieprzejrzyste. Enter przed mainem i wcięcie przed l, while oraz cout poprawią estetykę
3. Zastanów się, czy potrzebujesz else czy wystarczy tylko to, co jest po nim.
PS
Przeczytaj też komentarze pod zadaniem