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