A dificuldade deste problema está em identificares exactamente o que pretendes, não está na implementação.
Consegues descrever aquilo que achas que o algoritmo deve fazer em texto? Ou seja, naquele exemplo (([16, 15, 23, 24, 28, 23, 29, 45, 12, 67], 3)), porque motivo é que pretendes dividir entre o 16 e o 23 e entre o 29 e o 45? Porque não outros dois locais? Repara que existem várias respostas possíveis perfeitamente razoáveis, mas isso é algo que só tu podes responder.
Por exemplo, suponho que ([1, 2, 3, 7, 9], 2) deve ser particionado em [1,2,3] e [7,9]. E se o vector inicial for [1, 2, 3, 7, 100]? Provavelmente [1, 2, 3, 7] e [100]. E se for [1, 2, 3, 7, 15]? Onde é que "traças a linha"? Porquê? Sem conseguires explicar para ti próprio o que deve o algoritmo fazer nestes casos, não o vais conseguir implementar.