Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

AL_15_02 - Kompresja 3

Wymyśliliśmy bardzo "ciekawą i nowatorską" metodę kompresji tekstu, a jako że jesteśmy bardzo zapracowani jej implementację pozostawiamy Tobie. Oto zasady:

  • Tekst jest poddawany podwójnej kompresji, najpierw kompresowane są litery w obrębie wyrazów, a następnie kompresowane są wyrazy.
  • Kompresja liter działa następująco: jeżeli dana litera występuje w bezpośrednim sąsiedztwie więcej niż jeden raz zastępujemy je jednokrotnym wystąpieniem tej litery, po której następuje znak * oraz liczba wystąpień. Kompresji liter dokonujemy tylko wtedy gdy ich długość po skompresowaniu jest mniejsza niż długość liter bez kompresji.
  • Kompresja wyrazów działa następująco: jeżeli dany wyraz (ze skompresowanymi literami bądź nie) występuje w bezpośrednim sąsiedztwie więcej niż jeden raz zastępujemy go pojedynczym jego wystąpieniem po którym następuje znak / oraz liczba jego wystąpień. 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.

Oczywiście potrzebujemy również programu, który będzie w stanie odwrócić cały proces dlatego pierwszą linię każdego testu stanowi wyraz KOMPRESJA albo DEKOMPRESJA i określa on sposób w jaki program powinien traktować tekst na wejściu. Wejście może składać się z wielu linii skompresowanego lub nieskompresowanego tekstu, wyjście natomiast powinno znajdować się wyłącznie w jednej linii. Wyrazy powinny być oddzielone pojedynczymi spacjami.

Wejście

W pierwszej linii wejścia znajduje się jeden wyraz KOMPRESJA albo DEKOMPRESJA określający operację jaką należy wykonać. W kolejnych liniach znajduje się tekst na którym trzeba wykonać daną operację. Tekst składa się z nie więcej niż 1000 wyrazów. Każdy wyraz zawiera wyłącznie małe litery alfabetu angielskiego zaś jego długość nie przekracza 2000 znaków.

Wyjście

Na wyjściu należy wypisać przetworzony tekst w jednej linii. Wyrazy należy oddzielić pojedynczą spacją.

Przykład 1

Wejście

KOMPRESJA
kkkkompressja kkkkompressja 
kkkkompressja tekstu tekstu

Wyjście

k*4ompressja/3 tekstu/2

Przykład 2

Wejście

DEKOMPRESJA
d*4ekompres*4ja/2 te*5kstu/2

Wyjście

ddddekompressssja ddddekompressssja teeeeekstu teeeeekstu

Dodane przez:Maciej Boniecki
Data dodania:2014-03-29
Limit czasu wykonania programu:0.300s
Limit długości kodu źródłowego50000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:All except: ASM64 GOSU
Pochodzenie:ALGOLIGA

ukryj komentarze
2014-03-29 13:59:50 Maciej Boniecki
Tak mogą być. Odnośnie zbyt ostrego limitu dla C++ string to sprawdzimy czy faktycznie się nie da i wtedy podejmiemy ewentualną decyzję o zmianie.
2014-03-29 13:52:13 Thun
spacje na końcu outputu mogą być?
2014-03-29 13:41:14 Przemyslaw Lesniak
super zadanie ktorego nie mozna zrobic na C++ stringach...
2014-03-29 13:18:08 Maciej Boniecki
Fragment treści odnośnie kompresji liter został poprawiony.
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.