Cerința
Se consideră o mulţime de cuvinte care trebuie plasate (încrucişate) într-o matrice (careu) fie pe orizontală, fie pe verticală, o literă a unui cuvânt ocupând o celulă a careului. Două cuvinte se pot suprapune sau intersecta în careu doar dacă au aceleaşi litere la poziţiile comune. În careu pot rămâne celule neocupate.
În exemplul de mai jos, cuvintele (BUN, UNU, DOI, NOR)
sunt corect încrucişate.
B U N U - D O I - - R -
Scrieţi un program care, folosind datele din fişierul de intrare (cuvintele ce trebuie amplasate, respectiv dimensiunile careului), afişează în fişierul de intrare o matrice de caractere, reprezentând o amplasare corectă a cuvintelor, câte o linie a careului pe o linie a fişierului, elementele careului fiind separate prin câte un spaţiu. Celulele careului care nu sunt ocupate cu vreun cuvânt vor conţine caracterul special minus (-
).
Date de intrare
În fişierul cuvinte.in
se află, pe prima linie, în această ordine, numărul de cuvinte, respectiv numărul de linii şi numărul de coloane ale careului. Pe următoarele linii se află cuvintele ce trebuiesc amplasate în careu.
Date de ieșire
Fişierul cuvinte.out
va conţine o matrice de caractere, reprezentând o amplasare corectă a cuvintelor, conform descrierii de mai sus
Restricții și precizări
- în fişier se află cel mult
40
de cuvinte - careul are cel mult
30
de linii şi30
de coloane - celulele careului care nu sunt ocupate cu vreun cuvânt vor conţine caracterul
-
- există cel puţin o soluţie pentru fiecare dintre teste
Exemplu:
cuvinte.in
4 3 4 BUN UNU DOI NOR
cuvinte.out
Acesta este numai unul din modurile prin care se pot amplasa cuvintele din fişier în careu. Orice altă rezolvare corectă este punctată corespunzător.
B U N U - D O I - - R -
Notă:
Alte amplasări corecte pentru datele din exemplu:
B U N U | B U N U | D O I - | D O I N | etc. N O R - | N O R U |