== include(page="template/taskheader" task_id="mesaje") ==
Poveste şi cerinţă...
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ă!
h2. Cerintă
Cunoscând mesajele transmise de Alex, ajutaţi-l pe Cipri să descifreze planul de luptă conform convenţiei secrete.
h2. Date de intrare
Fişierul de intrare $mesaje.in$ ...
Fişierul de intrare mesaje.in conţine în ordine mesajele m[0],m[1],m[2],…, câte unul pe linie.
h2. Date de ieşire
În fişierul de ieşire $mesaje.out$ ...
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ă.
h2. Restricţii
h2. Restricţii si 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 maxim 20 de caractere, litere mici ale alfabetului englez.
* Lungimea unui mesaj este de maxim 30002 de 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.
* Se acordă 40% din punctajul corespunzător fiecărui test pentru determinarea valorii n şi întregul punctaj pentru rezolvarea corectă a ambelor cerinţe.
h2. Exemplu
table(example). |_. mesaje.in |_. mesaje.out |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
|
| inosos yy ataeclud ni
a yy ataeclud ni
yy inosos ni yy
inosos bb ataeclud ni
acni in e enib
| 3
dulceata in sosoni
|
table(example).
| miras ep maeg
| 3
sarim pe geam
|
h3. Explicaţie
...
Pentru primul exemplu :
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}.
Pentru al doilea exemplu :
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.
== include(page="template/taskfooter" task_id="mesaje") ==