mesaje

Time limit: 0.1s Memory limit: 2MB Input: mesaje.in Output: mesaje.out

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]\text{m}[0]. Pentru a nu fi descoperiţi, i-a trimis ulterior mai multe mesaje m[1],m[2],\text{m}[1], \text{m}[2], \dots lui Cipri, acesta trebuind să le descifreze folosind convenţia secretă stabilită la începutul prieteniei lor şi să „acţioneze”. Fiecare mesaj m[i]\text{m}[i] este format din mai multe cuvinte, separate prin câte un spaţiu, numerotate cu valori consecutive, începând de la 11.
Pentru a afla planul, Cipri trebuie să găsească cea mai mare valoare i0i \geq 0 astfel încât mesajele m[i]\text{m}[i] şi m[0]\text{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\text{m}[0] se păstrează toate cuvintele care se găsesc şi în mesajul m[i]\text{m}[i] cu acelaşi număr de ordine ca în m[0]\text{m}[0].
Cuvintele păstrate trebuie ordonate în ordine descrescătoare lexicografică a puterii lor. Puterea cuvântului cu numărul de ordine jj în m[0]\text{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]\text{m}[0]. Astfel, un cuvânt care a apărut cu numărul de ordine 22 în mesajele m[0],m[6]\text{m}[0], \text{m}[6] şi m[8]\text{m}[8] are puterea {8,6,0}\{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ţă

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],,\text{m}[0], \text{m}[1], \text{m}[2], \dots, câte unul pe linie.

Date de ieşire

Fişierul de ieşire mesaje.out va conţine pe prima linie numărul nn de cuvinte ale planului de luptă, iar pe cea de a doua linie cele nn 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 2020 de caractere, litere mici ale alfabetului englez.
  • Lungimea unui mesaj este de maxim 30 00230 \ 002 de caractere.
  • Toate mesajele au acelaşi număr de cuvinte.
  • Fişierul de intrare conţine cel puţin 11 şi cel mult 128128 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ă 40%40\% din punctajul corespunzător fiecărui test pentru determinarea valorii nn ş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 m[0]\text{m}[0] şi m[4]\text{m}[4] nu conţin cuvinte identice cu acelaşi număr de ordine.
Mesajele m[0]\text{m}[0] şi m[3]\text{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}\{3, 1, 0\}, ni {3,1,0}\{3, 1, 0\}, inosos {3,0}\{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.

Log in or sign up to be able to send submissions!