Está na hora de contar os votos!
Hoje existem eleições locais em todo o meu país. Aqui, o número de assentos para cada parte é decidido usando o método D'Hondt . Seu objetivo é implementar um programa ou função que decida quantos assentos cada parte recebe, na menor quantidade de bytes.
Para esse método, há um número fixo de assentos a serem distribuídos, e é feito da seguinte maneira:
- Cada partido recebe um número variável, que começa com o número de votos que obteve.
- Em seguida, o primeiro assento é dado ao partido que tem o maior valor em sua variável e, em seguida, esse valor para esse partido se torna seu número total de votos dividido por
1+seats, arredondado para baixo, ondeseatsestá o número de lugares que ele já tem (portanto, depois de obter o primeiro, seus votos são divididos por 2 e 3 após obter o segundo lugar). - Depois disso, os votos dos partidos são comparados novamente. O processo continua até que todos os assentos tenham sido atribuídos.
Se o número mais alto for um empate entre duas ou mais partes, ele será resolvido aleatoriamente (deve ser aleatório, não pode ser apenas o primeiro dos dois na lista).
Entrada
Você receberá um número N, que indicará o número de assentos disponíveis, e uma lista dos votos que cada parte recebeu, no formato que preferir. Exemplo:
25
12984,7716,13009,4045,1741,1013
Resultado
Você deve exibir uma lista dos assentos que cada parte obteve. No exemplo acima, seria algo como
8,5,9,2,1,0
Eles devem estar na mesma ordem que as partes na entrada.
Exemplos
5
3,6,1
outputs: 2,3,0
135
1116259,498124,524707,471681,359705,275007,126435
outputs: 45,20,21,19,14,11,5
Bônus
-20% de bônus se pegar o nome das partes como entrada e fornecer a saída, como por exemplo:
25
cio:12984,pcc:7716,irc:13009,icb:4045,cub:1741,bb:1013
outputs
cio:8
pcc:5
irc:9
icb:2
cub:1
bb:0