Es ist Zeit ... die Stimmen zu zählen!
Heute finden in meinem ganzen Land Kommunalwahlen statt. Hier wird die Anzahl der Sitze für jede Partei nach der D'Hondt-Methode festgelegt . Ihr Ziel ist es, ein Programm oder eine Funktion zu implementieren, die in kürzester Zeit entscheidet, wie viele Sitze jede Partei erhält.
Für diese Methode gibt es eine feste Anzahl von zu verteilenden Plätzen. Dies geschieht folgendermaßen:
- Jeder Partei wird eine variable Nummer zugewiesen, die mit der Anzahl der abgegebenen Stimmen beginnt.
- Dann wird der erste Sitz an die Partei vergeben, die den größten Wert in ihrer Variablen hat, und dieser Wert für diese Partei ergibt sich aus der Gesamtzahl der durch dividierten Stimmen
1+seats, abgerundet nachseatsder Anzahl der Sitze, die sie bereits hat (also nach dem Erhalt der Zunächst werden ihre Stimmen durch 2 und nach Erreichen des zweiten Sitzes durch 3 geteilt. - Danach werden die Stimmen der Parteien erneut verglichen. Der Vorgang wird fortgesetzt, bis alle Sitze zugewiesen wurden.
Wenn die höchste Zahl ein Gleichstand zwischen zwei oder mehr Parteien ist, wird sie zufällig aufgelöst (Es muss zufällig sein, es kann nicht nur die erste der beiden in der Liste sein).
Eingang
Sie erhalten eine Nummer N, die die Anzahl der verfügbaren Plätze angibt, und eine Liste der Stimmen, die jede Partei erhalten hat, in dem von Ihnen bevorzugten Format. Beispiel:
25
12984,7716,13009,4045,1741,1013
Ausgabe
Sie sollten eine Liste der Sitze jeder Partei ausgeben. Im obigen Beispiel wäre es so etwas wie
8,5,9,2,1,0
Sie sollten in der gleichen Reihenfolge wie die Parteien in der Eingabe sein.
Beispiele
5
3,6,1
outputs: 2,3,0
135
1116259,498124,524707,471681,359705,275007,126435
outputs: 45,20,21,19,14,11,5
Bonus
-20% Bonus, wenn der Name der Partei als Eingabe genommen und in der Ausgabe angegeben wird, wie zum Beispiel:
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