Time limit: 0.02s
Memory limit: 2MB
Input: virus.in
Output: virus.outPoints by default: 10p
Virusul DOBAD atacă fişierele text şi le modifică, linie cu linie, în etape.
- Etapa – dacă linia curentă este nevidă, determină numărul total de spaţii, poziţiile la care începe fiecare secvenţă de spaţii consecutive şi lungimile acestor secvenţe apoi trece la etapele şi ; dacă linia curentă e vidă, determină câte linii consecutive vide sunt şi le înlocuieşte cu o singură linie pe care scrie, între caractere
/
, numărul acestora; - Etapa – şterge toate spaţiile de pe linia curentă şi înlocuieşte textul iniţial cu cel obţinut;
- Etapa – adaugă la sfârşitul liniei, imediat după textul obţinut la etapa , o succesiune de numere naturale, delimitate prin caractere
/
, reprezentând poziţia la care a început o secvenţă de spaţii apoi lungimea acesteia, în ordinea în care aceste secvenţe de spaţii au apărut în text.
Cerinţă
Scrieţi un program care preia conţinutul unui fişier virusat de DOBAD şi îl devirusează, aducându-l la forma iniţială.
Date de intrare
Fişierul virus.in
conţine pe prima linie , numărul de linii din care este alcătuit textul virusat apoi cele linii infectate.
Date de ieşire
Fişierul virus.out
conţine pe prima linie , numărul de linii din fişierul restaurat apoi cele m linii ale fişierului devirusat.
Restricții și precizări
- ,
- Dacă o linie nevidă nu conţine spaţii, aceasta nu va fi alterată de virus.
- Fişierul nevirusat nu conţine caracterul
/
, nu conţine linii formate doar din spaţii şi nu se termină cu linii vide. - Liniile din fişierul de intrare nu depăşesc caractere iar primul caracter dintr-o linie este considerat pe poziţia .
Exemplu
virus.in
6
satestam!fisierulacesta/3/1/11/8/27/3/
/2/
culiniivide/3/2/10/10/
/3/
gata
numodificnimic./3/1/11/5/
virus.out
9
sa testam! fisierul acesta
cu linii vide
gata
nu modific nimic
Explicație
- Lin.
- Lin.-vidă
- Lin.-vidă
- Lin.
- Lin.-vidă
- Lin.-vidă
- Lin.-vidă
- Lin.
- Lin.