Oyları saymanın zamanı geldi!
Bugün bütün ülkemde yerel seçimler var. Burada, her bir taraf için koltuk sayısına D'Hondt yöntemi kullanılarak karar verilir . Amacınız, her bir tarafın kaç sandalye alacağına, en kısa bayt miktarına karar verecek bir program veya işlev uygulamaktır.
Bu yöntem için dağıtılacak sabit sayıda koltuk vardır ve böyle yapılır:
- Her partiye, aldığı oy sayısında başlayan değişken bir sayı verilir.
- Daha sonra ilk koltuk, değişkenlerinde en büyük değere sahip olan partiye verilir ve daha sonra bu parti için bu değer, toplam oy sayısına bölünür
1+seats
, yuvarlanır,seats
zaten sahip olduğu koltuk sayısına (yani Birincisi, oyları 2'ye, ikinci koltuğu aldıktan sonra 3'e bölünür). - Bundan sonra partilerin oyları yeniden karşılaştırılır. İşlem tüm koltuklar atanana kadar devam eder.
En yüksek sayı iki veya daha fazla taraf arasındaki bir kravatsa, rastgele çözülür (Rasgele olmak zorundadır, listedeki ikisinden sadece biri olamaz).
Giriş
Kullanabileceğiniz N
koltuk sayısını ve her bir tarafın aldığı oyların listesini istediğiniz formatta gösteren bir numara alacaksınız . Misal:
25
12984,7716,13009,4045,1741,1013
Çıktı
Her bir tarafın sahip olduğu koltukların bir listesini çıkarmalısınız. Yukarıdaki örnekte şöyle bir şey olurdu:
8,5,9,2,1,0
Girdideki taraflarla aynı sırada olmalıdırlar.
Örnekler
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
Tarafların adını girdi olarak alır ve çıktıda verirse, örneğin % -20 bonus :
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