110906 Torre de cubos - Programming Challenges

Anuncio
Skiena y Revilla, Concursos Internacionales de Informática y Programación
Manual de Entrenamiento por Internet, Universidad de Valladolid, España, 2003. ISBN: 84-8448-371-1
110906
Torre de cubos
Disponemos de N cubos de colores, cada uno de un peso distinto. Cada cara de los cubos tiene un
color diferente. La tarea consiste en construir la torre de cubos más alta posible, teniendo en cuenta
que (1) no se puede colocar un cubo encima de otro más ligero, y (2) el color de la cara inferior de cada
cubo (con la excepción del que se encuentra en la base) debe ser el mismo que el de la cara superior
del cubo que tiene debajo.
Entrada
La entrada puede constar de varios casos de prueba. La primera lı́nea de cada caso contiene un
entero N (1 ≤ N ≤ 500), que indica el número de cubos del que disponemos. La lı́nea i-ésima de las
siguientes N lı́neas contiene la descripción del cubo i-ésimo. Un cubo se describe por los colores de sus
caras en el siguiente orden: anterior, posterior, izquierda, derecha, superior e inferior. Por comodidad,
los colores están identificados por enteros del 1 al 100. Podemos asumir que la definición de los cubos
se hace en orden ascendente de su peso, es decir, el cubo 1 es el más ligero y el cubo N el más pesado.
La entrada finalizará cuando el valor de N sea 0.
Salida
Comenzar mostrando una lı́nea que indique el número del caso de prueba, según el formato del
ejemplo de salida. En la siguiente lı́nea, mostrar el número de cubos que se utilizarán en la torre más
alta posible. Las siguientes lı́neas describen los cubos de la torre, uno por lı́nea. Cada descripción
incluye el número de serie del cubo, según la entrada, seguido de un espacio en blanco y de la posición
del cubo, identificando la cara superior del mismo a partir de la posición original establecida en la
entrada (utilizando una de las siguientes palabras: front, back, left, right, top o bottom, respectivamente delantera, trasera, izquierda, derecha, arriba y abajo). Puede haber varias soluciones, en cuyo
caso, cualquiera de ellas será válida.
Imprimir una lı́nea en blanco entre cada dos casos de prueba sucesivos.
Ejemplo de entrada
3
1 2 2 2 1 2
3 3 3 3 3 3
3 2 1 1 1 1
10
1 5 10 3 6 5
2 6 7 3 6 9
5 7 3 2 1 9
1 3 3 5 8 10
6 6 2 2 4 4
1 2 3 4 5 6
10 9 8 7 6 5
6 1 2 3 4 7
1 2 3 3 2 1
3 2 1 1 2 3
0
Ejemplo de salida
Case #1
http://www.programming-challenges.com
c
copyright 2006
Skiena y Revilla, Concursos Internacionales de Informática y Programación
Manual de Entrenamiento por Internet, Universidad de Valladolid, España, 2003. ISBN: 84-8448-371-1
2
2 front
3 front
Case #2
8
1 bottom
2 back
3 right
4 left
6 top
8 front
9 front
10 top
http://www.programming-challenges.com
c
copyright 2006
Descargar