Olá Pedro,
A sugestão do Alberto é uma alternativa viável e se você quiser uma segunda solução você também pode utilizar uma fila de prioridade. No Java existe uma classe chamada PriorityQueue
que representa exatamente o tipo de estrutura que você está procurando.
Nesta estrutura, quando menor o número inserido, maior a sua prioridade. Para adicionar um item na fila você pode usar o método add
e para retirar o item de maior prioridade você pode utilizar o método remove
.
Desse modo, você pode criar uma fila de prioridade, adicionar todos os elementos nessa fila e depois ir retirando os elementos dela e adicionando em uma primeira lista de valores com prioridade menor ou igual a p. Quando a prioridade passar a ser maior que p você pode adicionar todos os itens em uma segunda lista que vai guardar todos os itens com prioridade maior que p.