请注意,在 LibreOJ 上,本题暂时只支持 C / C++ 语言提交。
题目译自 JOISC 2016 Day1 T2 「神経衰弱」
现有 $2N$ 张纸牌,每张纸牌上都写着一个 $0$ 以上 $N-1$ 以下的整数,写着同样整数的纸牌有且只有两张。你和 JOI 君正利用这 $2N$ 张纸牌练习一个叫做神经衰弱的游戏。
游戏开始时,这些纸牌正面向下,从左到右依次摆放。左起第 $i+1\ (0\le i\le 2N-1)$ 张牌称为纸牌 $i$。令 $A_i\ (0\le i\le 2N-1)$ 为纸牌 $i$ 上写的数字。最初,你和 JOI 君都不知道 $A_i$ 的值是什么。
你和 JOI 君可以最多进行 $K$ 次以下问答:
1. 你先选定 $2N$ 张牌中的两张;
2. JOI 君翻开这两张你指定的牌,看它们上面写的数字,但是你看不到这个过程。如果这两张牌上写的数字相同,他会记住这个数值并告诉你。否则,他会记住两个数字中更好记的一个,并告诉你更好记的那个数。
JOI 君对整数的记忆力可以用 $N$ 个整数 $P_0,P_1,\ldots ,P_{N-1}$ 表达。这些整数满足以下条件:
- $0\le P_i\le N-1\ (0\le i\le N-1)$
- $P_i\neq P_j\ (0\le i<j\le N-1)$
JOI 君认为整数 $i$ 比 $j$ 好记,当且仅当 $P_i<P_j$。
你的任务是在最多进行 $K$ 次问答的情况下确定每张牌上写的数字。但你不知道代表 JOI 君记忆力的整数 $P_0,P_1,\ldots ,P_{N-1}$ 的值。
请和 JOI 君配合,写一个程序确定每张牌上写的数字。