Пришло время ... подсчитать голоса!
Сегодня во всей моей стране проходят местные выборы. Здесь количество мест для каждой вечеринки определяется методом Д'Хондта . Ваша цель состоит в том, чтобы реализовать программу или функцию, которая будет определять, сколько мест получает каждая сторона, в кратчайшем количестве байтов.
Для этого метода есть фиксированное количество мест для распределения, и это делается так:
- Каждой партии присваивается переменный номер, который начинается с количества полученных голосов.
- Затем первое место отводится партии, которая имеет наибольшее значение в своей переменной, а затем это значение для этой партии становится их общим числом голосов, разделенным на
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