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
.