Bây giờ là thời điểm bầu cử. cử tri tham gia vào cuộc bầu cử, mỗi người sẽ bỏ lá phiếu cho một trong số đảng. công chức sẽ được chọn vào nghị viện. Sự chuyển đổi từ những lá phiếu thành các ghế trong nghị viện được thực hiện theo phương pháp D'Hondt với ngưỡng . Chính xác hơn, giả sử các đảng được đánh số từ đến và họ nhận được lần lượt phiếu bầu. Các ghế của nghị viện sẽ được phân bố như sau:
Tất cả các đảng nhận được ít hơn tổng số phiếu sẽ bị xóa khỏi danh sách.
Nghị viện ban đầu trống, tức là mọi đảng đều chưa có ghế nào trong nghị viện.
Với một đảng bất kỳ, thương số sẽ được tính, với là tổng số lá phiếu mà đảng nhận được, và là số lượng ghế đã phân cho đảng .
Đảng có thương số lớn nhất sẽ được phân thêm ghế. Nếu có nhiều đảng có cùng thương số lớn nhất đó thì đảng nào có số hiệu nhỏ hơn sẽ giành được ghế.
Lặp lại bước và cho đến khi nghị viện đầy. Các lá phiếu đang được đếm và mới chỉ có một phần của tổng số lá phiếu được kiểm. Chúng ta tạm thời biết được số phiếu mà mỗi đảng đang có.
Viết chương trình tính toán cho mỗi đảng, trong số các khả năng có thể xảy ra sau khi tất cả lá phiếu đã được đếm, số lượng ghế lớn nhất và nhỏ nhất mà đảng đó giành được.
Dữ liệu vào:
Dòng đầu chứa các số nguyên và , số lượng phiếu bầu, số đảng và số ghế trong nghị viện;
Dòng thứ hai chứa số nguyên – số lượng phiếu bầu mà mỗi đảng nhận được (trong số phiếu đã được kiểm). Tổng của những số này không quá .
Dữ liệu ra:
Dòng đầu chứa số nguyên cách nhau bởi khoảng trống – số ghế lớn nhất mà mỗi đảng có thể giành được;
Dòng thứ hai ghi số nguyên cách nhau bởi khoảng trống – số ghế nhỏ nhất mà mỗi đảng có thể giành được.
Ví dụ:
Dữ liệu vào:
20 4 5
4 3 6 1
Dữ liệu ra:
3 3 3 2
1 0 1 0
Dữ liệu vào:
100 3 5
30 20 10
Dữ liệu ra:
4 3 3
1 1 0
Giải thích:
Trong ví dụ đầu tiên, phiếu bầu đã được kiểm và phiếu chưa. Để minh họa một kết quả có thể, giả sử rằng đảng đầu tiên nhận trong số lá phiếu đó, đảng thứ hai phiếu, đảng thứ ba phiếu và đảng thứ tư phiếu. Tổng số phiếu của các đảng sẽ là và . Tất cả các đảng đều vượt qua ngưỡng . Các ghế được phân bố như sau:
Các thương số ban đầu là và ; lớn nhất là nên đảng giành được ghế.
Các thương số bây giờ là và ; lớn nhất là nên đảng giành ghế.
Các thương số là và ; lớn nhất là nên đảng giành ghế.
Các thương số là và ; lớn nhất là nên đảng giành ghế.
Các thương số là và ; đảng và có cùng thương số và , nhưng đảng có số hiệu nhỏ hơn nên giành được ghế cuối cùng.
Trong kết quả này, số lượng ghế mà mỗi đảng giành được là và . Do đảng thứ hai có thể sẽ không giành được ghế nào, nên số thứ hai trên dòng của Dữ liệu ra sẽ là .