După multe năzbâtii făcute împreună, Alex şi Cipri nu mai au voie să se întâlnească. Alex – strategul echipei – a plănuit o nouă poznă şi a decis să-i transmită prietenului său planul de luptă, constând din anumite cuvinte dintr-un mesaj m[0]
. Pentru a nu fi descoperiți, i-a trimis ulterior mai multe mesaje m[1]
, m[2]
, … lui Cipri, acesta trebuind să le descifreze folosind convenția secretă stabilită la începutul prieteniei lor și să “acționeze”. Fiecare mesaj m[i]
este format din mai multe cuvinte, separate prin câte un spațiu, numerotate cu valori consecutive, începând de la 1
.
Pentru a afla planul, Cipri trebuie să găsească cea mai mare valoare i ≥ 0
astfel încât mesajele m[i]
și m[0]
să conțină cel puțin un cuvânt identic având același număr de ordine în ambele mesaje. Din m[0]
se păstrează toate cuvintele care se găsesc și în mesajul m[i]
cu același număr de ordine ca în m[0]
.
Cuvintele păstrate trebuie ordonate în ordine descrescătoare lexicografică a puterii lor. Puterea cuvântului cu numărul de ordine j
în m[0]
este egală cu șirul
ordonat descrescător al indicilor mesajelor în care apare cu același număr de ordine ca în m[0]
. Astfel, un cuvânt care a apărut cu numărul de ordine 2
în mesajele m[0]
, m[6]
și m[8]
are puterea {8,6,0}
. Dacă două cuvinte au aceeași putere, vor rămâne în ordinea din mesajul inițial.
Lui Cipri nu i-a mai rămas decât să citească fiecare cuvânt de la dreapta la stânga şi a descifrat tot planul de luptă!
Cerința
Cunoscând mesajele transmise de Alex, ajutaţi-l pe Cipri să descifreze planul de luptă conform convenţiei secrete.
Date de intrare
Fișierul de intrare mesaje.in
conține în ordine mesajele m[0]
, m[1]
, m[2]
, …, câte unul pe linie.
Date de ieșire
Fișierul de ieșire mesaje.out
va conține pe prima linie numărul n
de cuvinte ale planului de luptă, iar pe cea de a doua linie cele n
cuvinte ale planului de luptă.
Restricții și precizări
- Mesajele sunt memorate câte unul pe linie, fiind formate din cuvinte separate prin câte un spaţiu.
- Lungimea unui cuvânt este de maximum
20
de caractere, litere mici ale alfabetului englez. - Lungimea unui mesaj este de maximum
30002
caractere. - Toate mesajele au acelaşi număr de cuvinte.
- Fișierul de intrare conține cel puțin unul și cel mult
128
de mesaje. - Orice linie din fişierul de intrare (mesaj) se termină cu marcajul de sfârşit de linie (newline). Caracterul newline nu va fi considerat ca făcând parte din mesaj.
- Nu există mesaje vide.
Exemplul 1:
mesaje.in
inosos yy ataeclud ni a yy ataeclud ni yy inosos ni yy inosos bb ataeclud ni acni in e enib
mesaje.out
3 dulceata in sosoni
Explicație
Mesajele m[0]
și m[4]
nu conțin cuvinte identice cu același număr de ordine. Mesajele m[0]
și m[3]
conțin trei cuvinte identice cu același număr de ordine: inosos
, ataeclud
, ni
. În ordinea puterii, ele sunt: ataeclud {3,1,0}
, ni {3,1,0}
, inosos {3,0}
.
Exemplul 2:
mesaje.in
miras ep maeg
mesaje.out
3 sarim pe geam
Explicație
Pentru că a primit un singur mesaj, planul de luptă conţine oglinditele cuvintele din textul iniţial având toate aceeaşi putere, citite de la dreapta la stânga.