Tarefa 9 - Seleção de equipes

Prazo de entrega recomendado:

Para concluir esta tarefa, você deve ser capaz de implementar listas circulares duplamente ligadas.


Um grupo de amigos se reúne para jogar bola. Para dividir o grupo em duas equipes, eles inventaram uma forma curiosa de escolher os jogadores. À medida em que chegam na quadra, cada um toma nota de sua altura e entra na fila, como na figura seguinte.

Assim que o último amigo chega, inicia-se a seleção. Os amigos formam um círculo, na mesma ordem que chegaram, de forma que o segundo fique à direita do primeiro, o terceiro à direita do segundo e assim por diante.

Formado o círculo, o primeiro jogador lança um dado de seis faces. Se $n$ for o número sorteado, então a pessoa que está $n - 1$ lugares à esquerda do primeiro é escolhida para fazer parte da primeira equipe e sai do círculo. Note que se o número sorteado for $1$, então o próprio primeiro jogador é escolhido.

O dado é lançado novamente, sorteando um novo número $n$. A pessoa que está $n - 1$ lugares à direita do primeiro é escolhida para fazer parte da segunda equipe e sai do círculo.

Esse processo continua até que todas as pessoas sejam selecionadas.

Pode acontecer da pessoa que jogou o dado deixar o círculo. Nesse caso, ela entrega o dado para a próxima pessoa a sua direita. Veja na imagem a seguir.

Também pode acontecer do valor sorteado ser maior que o número de amigos ainda não selecionados. Nesse caso, contamos o número de lugares dando a volta no círculo.

Sua tarefa é escrever um programa equipes.c que seleciona as equipes.

Entrada

A primeira linha contém o número de amigos $m$. A segunda linha contém as alturas dos amigos em centímetros. A terceira linha contém os valores sorteados.

Exemplo de entrada

8
173 163 145 178 191 160 155 160
2 4 1 5 6 2 1 3

Saída

A saída deve conter duas linhas com as alturas dos amigos de cada time, em ordem crescente.

Exemplo de saída

160 160 163 173
145 155 178 191

Critérios

É obrigatório representar as coleções de amigos como lista circular duplamente ligada. É proibido utilizar vetores.

Correção

Esta tarefa será corrigida automaticamente sempre que você realizar um git push. Depois de terminada a tarefa, deve-se utilizar o botão na interface de notas para solicitar a correção de um monitor.

Turma AB: O peso desta tarefa é 3.

Turma E: Você deverá apresentar esta tarefa a um monitor PED. Para isso, você deve procurar atendimento em algum horário com monitor PED e digitar apresentar 9 no canal fila-apresentar.