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 . Pentru a nu fi descoperiţi, i-a trimis ulterior mai multe mesaje lui Cipri, acesta trebuind să le descifreze folosind convenţia secretă stabilită la începutul prieteniei lor şi să „acţioneze”. Fiecare mesaj este format din mai multe cuvinte, separate prin câte un spaţiu, numerotate cu valori consecutive, începând de la .
Pentru a afla planul, Cipri trebuie să găsească cea mai mare valoare astfel încât mesajele şi să conţină cel puţin un cuvânt identic având acelaşi număr de ordine în ambele mesaje. Din [0] se păstrează toate cuvintele care se găsesc şi în mesajul cu acelaşi număr de ordine ca în .
Cuvintele păstrate trebuie ordonate în ordine descrescătoare lexicografică a puterii lor. Puterea cuvântului cu numărul de ordine în este egală cu şirul ordonat descrescător al indicilor mesajelor în care apare cu acelaşi număr de ordine ca în . Astfel, un cuvânt care a apărut cu numărul de ordine în mesajele şi are puterea . 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ţă
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 câte unul pe linie.
Date de ieşire
Fişierul de ieşire mesaje.out
va conţine pe prima linie numărul de cuvinte ale planului de luptă, iar pe cea de a doua linie cele 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 maxim de caractere, litere mici ale alfabetului englez.
- Lungimea unui mesaj este de maxim de caractere.
- Toate mesajele au acelaşi număr de cuvinte.
- Fişierul de intrare conţine cel puţin şi cel mult de mesaje.
- Orice linie din fişierul de intrare (mesaj) se termină cu marcajul de sfârşit de linie (newline). Caracterul newline (
\n
) nu va fi considerat ca făcând parte din mesaj. - Nu există mesaje vide.
- Se acordă din punctajul corespunzător fiecărui test pentru determinarea valorii şi întregul punctaj pentru rezolvarea corectă a ambelor cerinţe.
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 şi nu conţin cuvinte identice cu acelaşi număr de ordine.
Mesajele şi conţin trei cuvinte identice cu acelaşi număr de ordine: inosos
, ataeclud
, ni
.
În ordinea puterii, ele sunt: ataeclud
, ni
, inosos
.
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.