AT_icpc2014spring_g.Proportional Representation
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
JAG 王国举行了议会议员选举。这个国家唯一采用的制度是政党名单比例代表制。在这个系统中,每个公民投票给一个政党,一个政党赢得的席位数量将与其获得的选票数量成正比。由于议会席位总数是整数,当然,通常不可能完全按比例分配席位。在 JAG 王国中,使用以下称为 D′Hondt 方法的方法来确定每一方的席位数量。
假设每一方都有无限的候选人供应,并且每一方的候选人都以某种方式排序。对于获得 x 票的政党的第 y 候选人,分配价值 yx。然后所有候选者按其分配价值的降序排序。第一个 T 候选人被认为获胜,其中 T 是席位总数,一个政党赢得的席位数是其获胜候选人的数量。
下面显示了一个包含三方的示例。
第一个政党获得了 40 票的选票,第二个获得了 60 票的选票,第三个获得了 30 票的选票。如果席位总数为 T=9 ,则第一方将赢得 3 个席位,第二方 4 个席位,第三方 2 个席位。
在选择获胜候选人时:
- 以抽签方式打破平局;
- 任何并列的候选人都有机会获胜。
例如,在上面的示例中,如果 T=5,那么两个候选人的价值为 20,并且有两种可能的结果:
-
第一方赢得 2 个席位、第二方 2 个席位,第三方 1 个席位。
-
第一方赢得 1 个席位、第二方 3 个席位,第三方 1 个席位。
你刚刚在电视上听到了选举结果。知道有效票的总数和每一方赢得的席位数,你想知道每一方获得了多少票。
给定 N , M 和 Si (1≤i≤M),分别表示有效票总数,政党数量和第 i 政党赢得的席位数量,你的任务是分别为每一方确定它收到的最小和最大可能的票数。请注意,在某些情况下,给定的 N ,M 和 Si 可能不存在这种情况。
输入格式
输入的第一行包含两个整数 N (1≤N≤109) 和 M (1≤M≤30,000) ,其中 N 是有效票数的总数 ,M 是参与方的数量。
接下来是 M 行,其中第 i 行包含一个整数 Si (0≤Si≤30,000),代表第 i 党赢得的席位数。你可以假设存在 i 且 Si=0。
输出格式
如果给定的 N , M 和 Si 不存在任何情况,则显示 impossible一词。否则,输出 M 行,每行包含两个整数。第 i 行中的第一个整数和第二个整数应该分别是第 i 方获得的最小和最大可能票数。
Sample Input 1 :
102
2
1
Output for the Sample Input 1 :
57
35
Sample Input 2 :
56
0
2
0
2
6
0
Output for the Sample Input 2 :
00
11
00
11
33
00
输入解题思路,AI测评打分。不知道怎么写?