nod

Time limit: 0.05s Memory limit: 2MB Input: nod.in Output: nod.out

Pe vremea maurilor, transmiterea unor mesaje codificate între două persoane se făcea folosind un cifru numit nod. Cele două persoane alegeau în secret o poveste. Aceasta era scrisă într-o carte folosind litere mici și mari ale alfabetului englez, pe PP pagini, numerotate de la 11 la PP, fiecare conținând exact RR rânduri, numerotate în cadrul fiecărei pagini de la 11 la RR, iar fiecare rând fiind format din exact C cuvinte, numerotate în cadrul fiecărui rând de la 11 la CC.
Un cuvânt al mesajului de transmis era codificat prin poziția sa în povestea aleasă de cei doi, folosind trei numere scrise cu cifre romane, ce indicau în ordine: numărul paginii, numărul rândului în cadrul paginii, respectiv al cuvântului în cadrul rândului.
Mesajul astfel codificat era scris pe trei linii. Pe prima linie erau scrise numerele paginilor, pe a doua linie numerele rândurilor, iar pe a treia linie erau scrise numerele de ordine ale cuvintelor.
Presupunem că mesajul este format din primul cuvânt de pe al cincilea rând al celei de a doua pagini și din al patrulea cuvânt de pe rândul al doilea al primei pagini. Mesajul putea fi transmis pe trei linii în modul următor:
II I (numerele paginilor)
V II (numerele rândurilor)
I IV (numerele cuvintelor)
Cifrele romane sunt scrise cu majusculele M\text{M}, D\text{D}, C\text{C}, L\text{L}, X\text{X}, V\text{V}, I\text{I}, iar valorile corespunzătoare lor sunt în ordine: 1000,500,100,50,10,5,11000, 500, 100, 50, 10, 5, 1. Valoarea unui număr scris cu cifre romane se calculează parcurgând de la stânga la dreapta cifrele numărului astfel:

  • cifra curentă se adună la valoarea obținută până în acel moment, dacă cifra următoare este mai mică sau egală cu ea
  • cifra curentă se scade din valoarea obținută până în acel moment, dacă cifra următoare este mai mare decât ea
  • ultima cifră se adună întotdeauna la valoarea obținută până în acel moment

De exemplu pentru numărul MCDXLVI\text{MCDXLVI} scris cu cifre romane, se obține valoarea 14461446 în sistem zecimal, astfel: 1000100+50010+50+5+11000 - 100 + 500 - 10 + 50 + 5 + 1, iar pentru numărul XXI\text{XXI} scris cu cifre romane se obține valoarea 2121 în sistemul zecimal astfel: 10+10+110 + 10 + 1.

Cerinţă

Cunoscându-se textul poveștii ales de cei doi și mesajul codificat de ei scrieți un program care rezolvă următoarele două cerințe:
a) Rescrie mesajul codificat folosind scrierea cu cifre din sistemul zecimal.
b) Afișează toate cuvintele mesajului decodificat în ordinea în care acestea apar în poveste.

Date de intrare

Fişierul de intrare nod.in conține:

  • pe prima linie numărul 11, dacă se cere rezolvarea doar a cerinței a)a) sau numărul 22, dacă se cere rezolvarea cerinței b)b);
  • pe următoarele trei linii mesajul codificat după regulile descrise în enunț;
  • dacă primul număr din fișier este 22 atunci a cincea linie conține trei numere naturale PP, RR și CC, separate între ele prin câte un spaţiu, cu semnificaţia din enunţ;
  • pe următoarele P×RP \times R linii este scris textul poveștii, fiecare linie conținând CC cuvinte, separate prin câte un spațiu.

Date de ieşire

Dacă primul număr din fișierul de intrare este 11 atunci fişierul de ieşire nod.out va conține, în aceeași ordine, pe trei linii, numerele din mesajul codificat scrise în sistem zecimal. Numerele vor fi despărțite în cadrul liniilor prin câte un spațiu.
Dacă primul număr din fișierul de intrare este 22 atunci fişierul de ieşire nod.out va conține pe o singură linie cuvintele mesajului decodificat, în ordinea din poveste. Cuvintele vor fi separate prin câte un spațiu.

Restricţii şi precizări

  • 1P2 0001 \leq P \leq 2 \ 000
  • 1R251 \leq R \leq 25
  • 1C151 \leq C \leq 15
  • 1lungimea unui cuvaˆnt din poveste121 \leq \text{lungimea unui cuvânt din poveste} \leq 12
  • orice număr scris cu cifre romane are cel mult 1010 majuscule
  • mesajul decodificat va conține cel mult 2020 de cuvinte

Exemplul 1

nod.in

1
III II I
II V II
VI I IV

nod.out

3 2 1
2 5 2
6 1 4

Explicaţie

Testul de intrare indică rezolvarea primei cerințe, adică cerința a)a).
Numerele de pe fiecare linie sunt scrise în aceeași ordine, în sistemul zecimal.

Exemplul 2

nod.in

2
I III II I II
I I II I II
I II II II IV
3 2 4
La Olimpiada problemele pot
avea una sau mai
multe cerinte Pentru unele
probleme comisia poate decide
ca prima cerinta sa
fie evaluata si separat

nod.out

La Olimpiada comisia decide prima

Explicaţie

Testul de intrare indică rezolvarea celei de a doua cerințe, adică cerința b)b).
Cuvintele identificate în poveste sunt:
La - prin (I, I, I)
prima - prin (III, I, II)
comisia - prin (II, II, II)
Olimpiada - prin (I, I, II)
decide - prin (II, II, IV)
Cuvintele mesajului decodificat, în ordinea din poveste, sunt:
La Olimpiada comisia decide prima

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