P7743 [COCI 2011/2012 #3] D’HONDT

题目背景

$12$ 月初,某国举行议会选举。这个国家被分为十个选区,每个选区要选出 $14$ 名议会代表。每个选民都投票支持少数政党中的一个。投票后,选区代表用 D'Hondt 分配原理选出。

题目描述

某一个选区里面有 $x$ 个选民,并有 $n$ 个政党参加议会选举。运用 D'Hondt 分配原理,我们先选出选票**至少占选民总数的 $5\%$** 的政党。然后对于某一个政党的票数分别除以 $1,2,\dots,14$,并将 $14$ 个除得的**实数**作为这个政党的分数分配给这个政党。然后,我们从拥有最高得分的政党中选出第一个代表,拥有第二高得分的政党中选出第二个代表,以此类推。注意,在本题中,我们默认**选举代表的方式总是唯一的,即所有分数都不相同。** 现在,请你编写一个程序,给定选民的总数和每个政党得到的选票个数。请求出得到的选票至少占选民总数的 $5\%$ 的所有政党中,每一个政党能够选出的代表数。

输入格式

输入共 $n+2$ 行。 第一行一个整数 $x$,表示选民的个数。 第二行一个整数 $n$,表示参加议会选举的政党数。 随后 $n$ 行,每行一个大写字母和一个整数 $g$,分别表示政党的标识符和该政党拥有的选票数。

输出格式

输出若干行,每行一个大写字母和一个整数,分别代表一个得到的选票至少占选民总数的 $5\%$ 的政党的标识符和能够选出的代表数。 得到的选票至少占选民总数的 $5\%$ 的所有政党按照标识符在字母表中的位置升序排列。

说明/提示

**【数据范围】** 对于 $30\%$ 的数据,保证输入中所有政党拥有的票数都至少占选民总数的 $5\%$。 对于所有数据,$1\leqslant x\leqslant 2.5\times 10^6$,$0\leqslant n\leqslant 10$,$1\leqslant g\leqslant 2.5\times 10^5$。 **【题目来源】** 本题来源自 **_[COCI 2011-2012](https://hsin.hr/coci/archive/2011_2012/) [CONTEST 3](https://hsin.hr/coci/archive/2011_2012/contest3_tasks.pdf) T2 D'HONDT_**,按照原题数据配置,满分 $80$ 分。 由 [Eason_AC](https://www.luogu.com.cn/user/112917) 翻译整理提供。