110402 Torres de tortitas

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
110402
Torres de tortitas
Cocinar una torre de tortitas perfecta en una parrilla es bastante complicado porque, por mucho
cuidado que se ponga, las tortitas de una misma torre siempre tendrán diámetros diferentes. De todas
formas, para mejorar la presentación, es posible ordenar las tortitas de la torre por tamaño, de forma
que cada una de ellas sea menor que la que tiene debajo. El tamaño de la tortita lo determina su
diámetro.
La torre se ordena mediante una secuencia de “volteos” de las tortitas. Un volteo consiste en
introducir una espátula entre dos tortitas de la torre, y dar la vuelta a todas las tortitas que quedan
encima de la espátula (es decir, se da la vuelta a un subconjunto de la torre). Un volteo se especifica
indicando la posición de la tortita inferior del subconjunto en relación a la torre completa. La tortita
inferior ocupa la posición 1, mientras que la superior, en una torre de n tortitas, ocupa la posición n.
Una torre se define a través del diámetro de cada tortita en el orden en el que están colocadas
inicialmente. Por ejemplo, observemos las tres torres de tortitas que se muestran a continuación, donde
la tortita 8 es la superior en la torre de la izquierda:
8
4
6
7
5
2
7
6
4
8
5
2
2
5
8
4
6
7
La torre de la izquierda puede transformarse en la torre del medio mediante volteo(3). La torre del
medio puede transformarse en la de la derecha con el comando volteo(1).
Entrada
La entrada constará de una secuencia de torres de tortitas. Cada torre podrá tener entre 1 y 30
tortitas, y cada tortita tendrá un diámetro definido por un entero entre 1 y 100. La entrada termina
con un carácter de fin de archivo. Cada torre aparece como una única lı́nea de la entrada, siendo la
tortita superior la primera en aparecer en la lı́nea, la inferior la última y sabiendo que están separadas
entre sı́ por un espacio.
Salida
Por cada torre de tortitas, el programa deberá mostrar la torre original en una lı́nea, seguida por
una secuencia de volteos cuyo resultado final sea la ordenación de la torre, de forma que la tortita más
grande quede en la parte inferior y la más pequeña en la superior. La secuencia de volteos se termina
con un 0, indicando que ya no son necesarios más. Una vez que la torre esté ordenada, no se deben
realizar más volteos.
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
Ejemplo de entrada
1 2 3 4 5
5 4 3 2 1
5 1 2 3 4
Ejemplo de salida
1
0
5
1
5
1
2 3 4 5
4 3 2 1
0
1 2 3 4
2 0
http://www.programming-challenges.com
c
copyright 2006
Descargar