arhivare

Time limit: 0.1s Memory limit: 4MB Input: arhivare.in Output: arhivare.out

Se propune următoarea schemă de arhivare-dezarhivare pentru texte care nu conţin caractere numerice. La arhivare, orice caracter nealfabetic al textului este copiat direct în textul arhivat. Un cuvânt este copiat în textul arhivat doar dacă este la prima apariţie a lui şi de asemenea este adăugat la sfârşitul unei liste de cuvinte. În apariţiile ulterioare cuvântul va fi înlocuit cu numărul de ordine din listă respectivă (numerotarea poziţiilor în listă începe de la 11).

Cerinţă

Scrieţi un program care:

  • citeşte din fişierul arhivare.in un text;
  • determină tipul operaţiei (arhivare/dezarhivare)
  • scrie în fișierul arhivare.out textul arhivat/dezarhivat.

Date de intrare

Fișierul de intrare arhivare.in va conține un șir de caractere ss, reprezentând un text.

Date de ieșire

În fişierul arhivare.out se va scrie textul arhivat/dezarhivat.

Restricții și precizări

  • șirul de caractere conține cel mult 100 000100 \ 000 caractere, iar cuvintele au cel mult 2020 de caractere, continand litere mici ale alfabetului.
  • în text există maxim 2 0002 \ 000 cuvinte
  • Un text se consideră că trebuie dezarhivat dacă el conţine cel puţin o cifră. Caracterele alfabetice sunt aza \dots z.

Exemplul 1

arhivare.in

mult mai mult din putin cat mai putin, mai-mai ca te pune pe ganduri cat mai mult.

arhivare.out

mult mai 1 din putin cat 2 4, 2-2 ca te pune pe ganduri 5 2 1.

Explicație

În exemplul de mai sus, "mai-mai" reprezintă două cuvinte. Lista de cuvinte generată în exemplul precedent este:

11 mult
22 mai
33 din
44 putin
55 cat
66 ca
77 te
88 pune
99 pe
1010 ganduri

Log in or sign up to be able to send submissions!