n
cuburi numerotate de la 1
la n
pentru care se cunosc latura și culoarea. Să se genereze toate turnurile de înălțime H
ce se pot forma cu cele n
cuburi, astfel încât fiecare turn să respecte următoarele condiții:
- orice cub se așează peste un altul ce are latura mai mare sau egală cu a lui;
- să nu existe două cuburi consecutive de aceeași culoare;
Date de intrare
Fișierul de intrare turn_1.in
conține pe prima linie două numere naturale n
și H
, iar pe următoarele n
linii descrierea cuburilor. Linia i+1
conține descrierea cubului i
sub forma: latură culoare.
Date de ieșire
Fișierul de ieșire turn_1.out
va conține soluțiile generate în ordinea lexicografică a indicilor. O soluție este validă dacă conține descrierea indicilor cuburilor care alcătuiesc turnul de înălțime H
.
Restricții și precizări
1 ≤ n < 15
1 ≤ H ≤ 50
1 ≤ latura ≤ 10
culorile sunt șiruri de caractere cu cel mult 20 de litere și sunt scrise cu litere mici
- nu există cuburi identice
- pentru datele de intrare există întotdeauna soluție
Exemplu:
turn_1.in
5 5 1 alb 2 alb 1 roz 2 roz 3 alb
turn_1.out
2 4 1 4 2 3 5 3 1 5 4
Explicație
Primul turn este format din cuburile: 2 (2,alb), 4 (2,roz), 1 (1,alb)
.
Al doilea turn este format din cuburile: 4 (2,roz), 2 (2,alb), 3 (1,roz)
etc.