Đã đến lúc ... để kiểm phiếu!
Hôm nay có cuộc bầu cử địa phương trong cả nước tôi. Tại đây, số lượng ghế cho mỗi bên được quyết định bằng phương pháp D'Hondt . Mục tiêu của bạn là triển khai một chương trình hoặc chức năng sẽ quyết định mỗi bên có bao nhiêu chỗ ngồi, với số lượng byte ngắn nhất.
Đối với phương pháp này, có một số lượng ghế cố định để phân phối, và nó được thực hiện như vậy:
- Mỗi bên được chỉ định một số lượng khác nhau, bắt đầu từ số phiếu mà họ nhận được.
- Sau đó, ghế đầu tiên được trao cho bên có giá trị lớn nhất trong biến của họ và sau đó giá trị đó cho bên đó trở thành tổng số phiếu được chia cho
1+seats, làm tròn xuống,seatssố ghế đã có (vì vậy sau khi nhận được đầu tiên, phiếu bầu của họ được chia cho 2 và 3 sau khi nhận được ghế thứ hai). - Sau đó, các bên bỏ phiếu được so sánh một lần nữa. Quá trình tiếp tục cho đến khi tất cả các ghế đã được chỉ định.
Nếu số cao nhất là một ràng buộc giữa hai hoặc nhiều bên, thì nó được giải quyết ngẫu nhiên (Nó phải là ngẫu nhiên, nó không thể là đầu tiên trong số hai bên trong danh sách).
Đầu vào
Bạn sẽ nhận được một số N, trong đó sẽ cho biết số lượng ghế có sẵn và danh sách số phiếu mà mỗi bên nhận được, theo bất kỳ định dạng nào bạn thích. Thí dụ:
25
12984,7716,13009,4045,1741,1013
Đầu ra
Bạn nên đưa ra một danh sách các ghế mà mỗi bên có. Trong ví dụ trên, nó sẽ giống như
8,5,9,2,1,0
Họ phải theo thứ tự như các bên trong đầu vào.
Ví dụ
5
3,6,1
outputs: 2,3,0
135
1116259,498124,524707,471681,359705,275007,126435
outputs: 45,20,21,19,14,11,5
Tặng kem
-20% tiền thưởng nếu lấy tên của các bên làm đầu vào và cung cấp cho họ ở đầu ra, ví dụ như:
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