Cold Compress
Το νέο σας πρόγραμμα κινητής τηλεφωνίας σας χρεώνει για κάθε χαρακτήρα που στέλνετε από το τηλέφωνό σας. Δεδομένου ότι συνηθίζετε να στέλνετε ακολουθίες συμβόλων στα μηνύματά σας, σκεφτήκατε την ακόλουθη τεχνική συμπίεσης: για κάθε σύμβολο, γράφετε τον αριθμό των φορών που εμφανίζεται διαδοχικά, ακολουθούμενο από το ίδιο το σύμβολο. Αυτή η τεχνική συμπίεσης ονομάζεται κωδικοποίηση μήκους εκτέλεσης. Πιο τυπικά, ένα μπλοκ είναι μια υποακολουθία πανομοιότυπων συμβόλων που είναι όσο το δυνατόν μεγαλύτερη. Ένα μπλοκ θα αναπαρίσταται σε συμπιεσμένη μορφή ως το μήκος του μπλοκ ακολουθούμενο από το σύμβολο σε αυτό το μπλοκ. Η κωδικοποίηση μιας συμβολοσειράς είναι η αναπαράσταση κάθε μπλοκ της συμβολοσειράς με τη σειρά με την οποία εμφανίζονται στη συμβολοσειρά. Δεδομένης μιας ακολουθίας χαρακτήρων, γράψτε ένα πρόγραμμα για την κωδικοποίησή τους σε αυτή τη μορφή.
Είσοδος
Η πρώτη γραμμή εισόδου περιέχει τον αριθμό του πλήθους των γραμμών που ακολουθούν. Οι επόμενες γραμμές θα περιέχουν τουλάχιστον έναν και το πολύ χαρακτήρες, κανένας από τους οποίους δεν είναι το κενό.
Έξοδος
Η έξοδος θα αποτελείται από γραμμές. Η γραμμή της εξόδου θα είναι η κωδικοποίηση της γραμμής της εισόδου. Η κωδικοποίηση μιας γραμμής θα είναι μια ακολουθία από ζεύγη, χωρισμένα με κενό, όπου κάθε ζεύγος είναι ένας ακέραιος αριθμός (που αντιπροσωπεύει τον αριθμό των διαδοχικών εμφανίσεων του χαρακτήρα) ακολουθούμενος από ένα κενό, ακολουθούμενο από τον χαρακτήρα.
Παράδειγμα
input
4
+++===!!!!
777777......TTTTTTTTTTTT
(AABBC)
3.1415555
output
3 + 3 = 4 !
6 7 6 . 12 T
1 ( 2 A 2 B 1 C 1 )
1 3 1 . 1 1 1 4 1 1 4 5
Επεξήγηση του παραδείγματος:
Για να δείτε πώς κωδικοποιείται το πρώτο μήνυμα (στη δεύτερη γραμμή εισόδου), παρατηρήστε ότι υπάρχουν σύμβολα , ακολουθούμενα από σύμβολα , ακολουθούμενα από σύμβολα .
Comments