QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 512 MB 満点: 100

#3486. 配对袜子

統計

Simone 的母亲经常抱怨 Simone 从来不帮家里做家务。作为回应,Simone 常指出她母亲分配给她的许多家务在最优解下是 NP-完全问题(例如打扫房间、以无冲突的方式安排弟弟们围坐在餐桌旁、公平地分配弟弟们的万圣节战利品等等)。

身为一名计算机科学家,她的母亲觉得这是一个合理的反驳。在查看了潜在的家务清单后,她挑选了一项她认为应该很容易解决的任务——将不同种类的袜子配对。

起初,有 $2n$ 只袜子堆成一堆。为了配对袜子,Simone 可以重复进行以下三种操作之一:

  1. 将原始堆顶部的袜子移动到辅助堆(初始为空)的顶部。
  2. 将辅助堆顶部的袜子移动到原始堆的顶部。
  3. 如果两个堆顶部的袜子类型相同,则将它们配对并移除。

Simone 只有一个辅助堆,总共只有两个堆。每种类型的袜子可能不止两只。在这种情况下,Simone 可以随意将它们配对。

你的任务是帮助 Simone 确定她配对所有袜子所需的最少操作次数,如果无法完成,则输出相应结果。

图片由 Villy Fink Isaksen 提供,采用 cc by-sa 协议

输入格式

输入的第一行包含整数 $n$ ($1 \le n \le 10^5$)。下一行包含 $2n$ 个整数 $a_1, \dots, a_{2n}$ ($1 \le a_i \le 10^9$),其中 $a_i$ 表示第 $i$ 只袜子的类型。最初,第 1 只袜子位于堆的顶部,第 $2n$ 只袜子位于底部。

输出格式

如果 Simone 可以配对所有的袜子,输出她完成此任务所需的最少操作次数。如果无法做到,输出 “impossible”(不含引号)。

样例

输入 1

2
1 2 2 1

输出 1

4

输入 2

1
3 7

输出 2

impossible

输入 3

3
5 5 5 5 5 5

输出 3

6

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.