Пора ... порахувати голоси!
Сьогодні в моїй країні проводяться місцеві вибори. Тут кількість місць для кожної партії визначається методом Д'Хондта . Ваша мета - реалізувати програму або функцію, яка визначатиме, скільки місць отримає кожна сторона, в найкоротшій кількості байтів.
Для цього методу існує фіксована кількість місць для розподілу, і це робиться так:
- Кожній партії присвоюється змінна кількість, яка починається з кількості отриманих голосів.
- Тоді перше місце надається партії, яка має найбільшу цінність у своїй змінній, а потім цією цінністю для цієї партії стає їх загальна кількість голосів, поділене на
1+seats, округлене вниз, деseatsце кількість місць, які вона вже має (тому після отримання по-перше, їх голоси діляться на 2, і на 3 після отримання другого місця). - Після цього голоси партій знову порівнюються. Процес триває, поки не будуть призначені всі місця.
Якщо найбільша кількість є зв’язком між двома або більше сторонами, вона вирішується випадковим чином (вона повинна бути випадковою, вона не може бути просто першою з двох у списку).
Вхідні дані
Ви отримаєте номер N, в якому буде вказана кількість наявних місць та список голосів, отриманих кожною стороною, у будь-якому форматі, який ви бажаєте. Приклад:
25
12984,7716,13009,4045,1741,1013
Вихідні дані
Вам слід вивести список місць, які отримала кожна сторона. У наведеному вище прикладі це було б щось подібне
8,5,9,2,1,0
Вони повинні бути в тому ж порядку, що і сторони у введенні.
Приклади
5
3,6,1
outputs: 2,3,0
135
1116259,498124,524707,471681,359705,275007,126435
outputs: 45,20,21,19,14,11,5
Бонус
-20% бонус, якщо взяти назву сторін як вхідну інформацію та дати їм у висновку, наприклад:
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