balls
Se considera urmatorul
joc:
Initial, jucatorul are la dispozitie un sir de bile negre si rosii, asezate
īntr-o ordine oarecare īn partea de sus a ecranului. Un dispozitiv de tragere
mobil este plasat īn partea de jos a ecranului. Dispozitivul lanseaza bile (negre
si rosii) care sunt inserate īn sirul initial, succesiunea bilelor fiind cunoscuta.
Presupunand ca, la un moment dat, sirul bilelor este compus din n
bile, o bila lansata de dispozitivul de tragere poate fi inserata īn sir īntre
bila 1 si bila 2,
īntre bila 2 si bila 3,
,
sau īntre bila n-1 si n,
asa cum se observa īn figura de mai jos.
Cerinta
Scrieti un program care sa determine numarul minim de bile ce trebuie sa fie lansate astfel īncāt sirul initial de bile sa devina vid sau, īn cazul īn care acest lucru nu este posibil, se vor determina toate sirurile de bile de lungime minima ce se pot obtine prin lansarea tuturor bilelor disponibile īn dispozitivul de lansare.
Date de intrare
Fisierul balls.in contine pe prima linie un sir de caractere ce descrie sirul initial de bile, caracterul b reprezentānd o bila de culoare neagra, iar caracterul r reprezentānd o bila de culoare rosie. Pe cea de a doua linie se afla un sir de caractere ce descrie succesiunea īn care sunt lansate bilele din dispozitivul de tragere, caracterul b reprezentānd o bila de culoare neagra, iar caracterul r reprezentānd o bila de culoare rosie.
Date de iesire
Īn fisierul balls.out se va scrie pe prima linie numarul minim de bile ce trebuie lansate pentru a transforma sirul initial īn sirul vid, daca acest lucru este posibil. In caz contrar, in fisierul de iesire se vor scrie toate sirurile de bile de lungime minima ce se pot obtine prin lansarea tuturor bilelor disponibile din dispozitivul de lansare, cate un sir pe o linie, īn ordine lexicografica.
Restrictii
Suma dintre numarul bilelor din sirul initial si numarul bilelor din dispozitivul de lansare este un numar natural īntre 2 si 13.
Exemple
balls.in | balls.out | Explicatii | balls.in | balls.out | Explicatii |
rbbrrb rrb |
rbr rrb |
Prima
solutie se obtine conform explicatiilor din enunt. A doua solutie se obtine astfel: -inseram prima bila īntre bila 1 si bila 2 => rrbbrrb -inseram a doua bila īntre bila 1 si bila 2 =>rrrbbrrb => bbrrb -inseram a treia bila īntre bila 1 si bila 2=>bbbrrb => rrb |
rrbrr bbrb |
2 |
Daca
inseram primele doua bile, consecutiv, īntre bila 2 si bila 3 se obtin succesiv
configuratiile: rrbbrr => rrbbbrr => sirul vid |
Timp maxim de executie/test:
1 secunda
Memorie totala disponibila: 70 MB, din care 6 MB pentru stiva.
prof.
Alin Burta
Colegiul National "B.P. Hasdeu" Buzau
Contact: allbu2003@yahoo.com