QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100

#703. 赢得投票

Statistics

在 Elecuador 这个国家,使用着一种非常奇怪的投票系统。选举时,每一位 $n$ 名公民会以某种顺序到达投票站。只有两个政党可供投票,方便起见分别命名为 1 和 2。当一个人到达投票站时,除非他是计票员,否则他会为其中一个政党投票。计票员不投票,相反,他们会统计计票员到达时两个政党各自获得的票数,如果其中一个政党的票数多于另一个,则该政党获得一分(如果两个政党的票数相同,则双方均不得分)。最终得分最高的政党获胜。如果两个政党最终得分相同,则会陷入混乱。

作为代表 1 党的 Elecuador 总统,你担心即将到来的选举会终结你的统治。幸运的是,你有一个计划来阻止这种情况发生。作为总统,你知道国内每个人的投票意向、谁是计票员,以及每个人到达投票站的顺序。通过打一些电话,你还可以影响计票员到达的时间。在一次操作中,你可以将一名计票员与到达顺序列表中的相邻人员交换位置。注意,不能交换两名相邻的非计票员。为了确保 1 党获胜,最少需要多少次交换?

输入格式

输入的第一行包含一个整数 $n$ ($1 \le n \le 5\,000$),表示 Elecuador 的公民人数。接下来一行包含一个长度为 $n$ 的字符串 $s$,由字符 0、1 和 2 组成。该字符串表示公民到达投票站的顺序。如果第 $i$ 个字符 $s_i$ 为 1 或 2,则表示第 $i$ 位公民将分别投票给 1 党或 2 党。如果 $s_i$ 为 0,则表示第 $i$ 位公民是计票员。

输出格式

如果能够确保获胜,输出一个整数,即最少需要的交换次数。否则,输出 “impossible”。

样例

样例输入 1

8
12210020

样例输出 1

4

样例输入 2

4
1111

样例输出 2

impossible

样例输入 3

11
00211222220

样例输出 3

5

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.