QOJ.ac

QOJ

実行時間制限: 1.0 s メモリ制限: 2048 MB 満点: 100

#15951. 但我想要赢

統計

Borphee(Frobozz 帝国最大的城市)最近因为一只 Grue(格鲁兽)贪婪的胃口而失去了它的市长。副市长成为了临时市长,并立即接管了市长的职责。这些职责主要包括主持一年一度的双法努奇锦标赛(Double Fanucci Championships,一种极其复杂的纸牌游戏)以及“从坏到最坏”歌会(From Bad to Worst Songfest,每年冬天全国最难听的歌手都会聚集于此)。市长的年薪高达数十万佐克米德(zorkmids,简称 zm),对于如此轻松的工作来说,这笔收入非常丰厚。随着特别选举的临近,不用说,副市长想尽一切办法将自己的“临时市长”身份转为正式的“市长”,以保留他那极其丰厚的薪水。

整个帝国在所有选举中都使用一种单赢家排序复选制(ranked choice voting)的变体。其工作原理如下:

  1. 选民按偏好顺序在选票上标记候选人:第一选择(他们最喜欢的候选人)、第二选择(他们次喜欢的候选人)依此类推。每位选民必须对选票上的所有候选人进行排序。例如,如果选举中有 12 名候选人,那么每位选民将把他们的选择从 1(最喜欢)排到 12(最不喜欢)。随后,选举将分轮次进行。
  2. 在每一轮开始时,统计所有第一选择得票。如果某位候选人获得了超过 50% 的第一选择选票,该候选人即获胜,选举结束。
  3. 如果没有胜出者,则将第一选择得票数最少的候选人从所有选票中移除,其余排名较后的候选人依次递补。例如,如果一位选民对四位候选人的排序为 A(第一选择)、B、C、D,而候选人 A 被移除,则该选民的选票将变为 B(新的第一选择)、C、D;如果候选人 B 被移除,则选票变为 A、C、D。如果有一位或多位候选人并列第一选择得票数最少,则他们将全部从选票中移除。
  4. 重新调整选票后,返回步骤 2 开始下一轮。

这一过程可能会持续到只剩下 2 名候选人,此时获得过半数第一选择选票的候选人获胜。

临时市长假设选举最终将演变为他和另一位非常受欢迎的候选人之间的两强争霸。考虑到这一点,他希望将竞选宣传的重点放在那些在选票中将其他候选人排在第一位的选民身上,以防初始计票时他处于第二位。为了帮助他更好地规划,他希望你开发一个程序,能够帮他确定在第一轮之后,假设他在第一轮结束后处于第二位,他最少需要经过多少轮(不包括第一轮)才能获得过半数选票并获胜。

输入格式

输入第一行包含一个整数 $c$($2 \le c \le 20$),表示选举中的候选人数量。

接下来的一行包含 $c$ 个互不相同的整数 $v_1, v_2, \dots, v_c$($1 \le v_i \le 10^9$),其中每个 $v_i$ 表示候选人 $i$ 获得的第一选择票数。

输出格式

输出仅包含一行。如果处于第二位的候选人无法赢得选举,则输出 IMPOSSIBLE TO WIN。否则,输出该候选人利用排序复选制赢得选举所需的最少轮数(不包括第一轮)。

样例

输入样例 1

3
1 70 67

输出样例 1

IMPOSSIBLE TO WIN

输入样例 2

6
1 2 13 12 70 69

输出样例 2

3

输入样例 3

3
11 2 10

输出样例 3

1

输入样例 4

3
1 2 3

输出样例 4

IMPOSSIBLE TO WIN

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.