tetriss

Time limit: 0.3s Memory limit: 2MB Input: tetriss.in Output: tetriss.outPoints by default: 10p

În vacanţa de iarnă, elevii au descoperit pe Internet un nou joc ce se desfăşoară pe o suprafaţă dreptunghiulară de dimensiune n×mn \times m ( nn linii şi mm coloane). Jocul utilizează nn piese şi un set de pp machete. Piesele sunt formate din litere mici ale alfabetului englez, dispuse pe orizontală şi pot avea lungimi diferite (lungimea fiecărei piese nu depăşeşte valoarea lui mm). Fiecare piesă va fi completată la sfârşit cu spaţii, astfel încât lungimea ei să coincidă cu dimensiunea mm a suprafeţei de joc.
Fiecare machetă are rolul de a transforma un şir de caractere (denumit şir de intrare) în alt şir de caractere (denumit şir de ieşire).

De exemplu, macheta ab-de aplicată pieselor:

aycd
bxcab

transformă şirul ab (şir de intrare) în şirul de (şir de ieşire)
şi piesele se modifică astfel:

dycd
excab 

Dacă într-o machetă, şirul de ieşire este mai scurt decât şirul de intrare, atunci şirul de ieşire se va completa cu spaţii la sfârşit, astfel încât să aibă aceeaşi lungime cu şirul de intrare.
Regulile jocului sunt următoarele:

  • piesele se deplasează de sus în jos, pe suprafaţa necompletată iniţial şi se aşează unele peste altele;
  • după depunerea unei piese peste piesa anterioară, se aplică pe fiecare coloană, începând de la coloana 11, dacă este posibil, de sus în jos, setul de machete, în ordinea în care acestea sunt date (de exemplu pe o coloană oarecare se aplică, dacă este posibil, macheta 11, apoi macheta 22, \dots încheind cu macheta pp). O machetă se aplică pe o coloană până când se ajunge la marginea de jos a suprafeţei de joc, moment în care se trece la urmatoarea machetă (cea care îi urmează în setul specificat de machete).

După ce au fost plasate toate piesele pe suprafaţa de joc şi s-au aplicat machetele, conform regulilor anterioare, aceasta se rearanjează astfel:

  • pentru fiecare coloană, privită de sus în jos (ce reprezintă un şir de caractere), se vor elimina spaţiile care se repetă (cele de la extremităţi se elimină toate şi pentru cele care se repetă în interior, din mai multe spaţii consecutive va rămâne unul singur).

Dintre şirurile obţinute, se alege şirul de lungime maximă (dacă sunt mai multe astfel de şiruri se va reţine şirul cel mai apropiat de marginea din stânga a suprafeţei de joc) şi acesta va fi transformat după următoarea regulă: se rearanjează literele lui în ordine alfabetică, păstrând lungimea şi poziţia cuvintelor (se consideră cuvânt o succesiune de litere cuprinse între două spaţii, cu excepţia primului cuvânt care are spaţiu doar după el şi a ultimului cuvânt care are spaţiu doar în faţa lui).
De exemplu, şirul ana are mere se va transforma în şirul aaa eee mnrr.

Cerinţă:

Date fiind dimensiunile suprafeţei de joc, machetele şi piesele ce participă la joc, să se afişeze şirul obţinut în urma transformărilor cerute în enunţul problemei.

Date de intrare:

Fişierul de intrare tetriss.in conţine pe prima linie trei numere naturale nn, mm (dimensiunile suprafeţei de joc) şi pp (numărul de machete), separate prin spaţiu între ele, pe următoarele pp linii conţine machetele şi pe următoarele nn linii conţine piesele de joc.

Date de ieşire:

Fişierul de ieşire tetriss.out va conţine o singură linie ce conţine şirul obţinut în urma transformărilor cerute în enunţul problemei.

Restricţii şi precizări:

  • 1n2001 \leq n \leq 200, 1m1001 \leq m \leq 100, 1p1001 \leq p \leq 100
  • pentru fiecare machetă, 0<0 < dimensiunea şirului de intrare n\leq n
  • pentru fiecare machetă, 0<0 < dimensiunea şirului de ieşire \leq dimensiunea şirului de intrare

Exemplu

tetriss.in

4 6 8
bc-fg
ef-e
cd-d
eb-c
fd-cd
gdf-fg
fg-a
mc-m
cddfgh
bcdd
edfghd
aemcb

tetriss.out

3

Explicație

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