A ja zachęcam do nieużywania instrukcji go to, zmiennych globalnych, użycie jednej [lub dwu klas], z metodami: kompresja i dekompresja i wreszcie, tak jak to robią “najlepsi koderzy”, nie [nad]używać funkcji main() i wszystko rozpoczynać w funkcji start() lub starter() 
Czyli:
main(){
start();
return 0;
// i to by było na tyle 
}
A tak na poważnie, co ma piernik do wiatraka? Co powyższe [także dwie funkcje] ma wspólnego z rozwiązaniem zadania? Powyższe ma tylko wpływ na jakość kodu, jego czystość[brudność
] czy ewentualnie nawet piękność kodu.
“zwykły” kod <= czysty kod <= piękny kod <-- w takiej kolejności.
Do rozwiązania tego zadania wystarczy uważne przeczytanie treści zadania i skupienie się na kompresji, a szczególnie na:
Kompresji liter dokonujemy tylko wtedy gdy ich długość po skompresowaniu jest mniejsza niż długość liter bez kompresji.
i
Podobnie jak ma to miejsce w przypadku liter kompresję przeprowadzamy tylko wtedy gdy wyraz w postaci skompresowanej jest krótszy niż dana liczba jego wystąpień porozdzielana spacjami.
gdzie krótsza [mniejsza] to co innego niż mniejszarówna. Natomiast jak to zastosujesz w swoim kodzie, nie ma żadnego znaczenia. Polecam użyć instrukcji goto
i AC gwarantowane.
PS
Sędzia w tym zadaniu jest bardzo miłościwy i mało dokładny. Ignoruje wszystkie nadmiarowe białe znaki, gdzie nadmiarowe to więcej niż 1 wymagany i konieczny…