next up previous
Next: A entrada Up: No Title Previous: Exemplos

Problema 4: Panquecas

Arquivo: pank.c ou pank.pas
Entrada: pank.in
Saída: pank.out

Dada uma pilha de panquecas, você deve escrever um programa que indica como a pilha pode ser ordenada de forma que a maior panqueca está no fundo e a menor panqueca está no topo. O tamanho de uma panqueca é dado pelo seu diâmetro. Todas as panquecas de uma pilha têm diâmetros diferentes.

A ordenação da pilha é feita através de uma seqüência de ``giros'' ( flips) de panquecas. Um giro consiste em inserir a espátula entre duas panquecas em uma pilha e girar (reverter) todas as panquecas que estão em cima da espátula (revertendo a subpilha). Um giro é especificado dando a posição da panqueca da subpilha que será revertida (em relação à pilha completa). A panqueca do fundo da pilha inteira tem posição 1 e a panqueca do topo de uma pilha com n panquecas tem posição n .

Uma pilha é especificada dando o diâmetro de cada panqueca da pilha na ordem em que as panquecas aparecem.

Por exemplo, considere as três pilhas de panquecas abaixo (nas quais a panqueca 8 está no topo da pilha mais à esquerda):

8 7 2
4 6 5
6 4 8
7 8 4
5 5 6
2 2 7

A pilha mais à esquerda pode ser transformada na pilha do meio fazendo a operação flip(3). A pilha do meio pode ser transformada na pilha à direita através do comando flip(1).



 
next up previous
Next: A entrada Up: No Title Previous: Exemplos

Carlos Eduardo Ferreira
8/17/1998