P15647 [ICPC 2022 Tehran R] Magic with Cards
题目描述
Mahsa 已经练习洗牌好几个月了。今晚,她终于决定邀请朋友们过来,展示她的新技能。于是她拿起一副有 $2n$ 张牌的牌堆,在不改变牌堆顺序的情况下向朋友们展示了牌面,并请某人选择牌堆中的两个位置 $i$ 和 $j$。然后,她告诉大家,她将只通过应用两种洗牌方式,把第 $i$ 个位置的牌移动到第 $j$ 个位置。
假设牌堆中的牌为 $\langle c_{1}, c_{2}, \ldots, c_{2n} \rangle$。Mahsa 可以任意多次执行以下两种洗牌:
- **Riffle(交错洗牌):** 将牌分成两部分 $\langle c_{1}, \ldots, c_{n} \rangle$ 和 $\langle c_{n+1}, \ldots, c_{2n} \rangle$,然后产生 $\langle c_{1}, c_{n+1}, c_{2}, c_{n+2}, \ldots, c_{n}, c_{2n} \rangle$。
- **Scuffle(对调洗牌):** 从 $\langle c_{1}, c_{2}, \ldots, c_{2n} \rangle$ 产生 $\langle c_{2}, c_{1}, c_{4}, c_{3}, \ldots, c_{2n}, c_{2n-1} \rangle$。
请帮助 Mahsa 找出她需要的最少洗牌次数,剩下的部分她自己会搞定。
输入格式
输入包含一行,由三个空格分隔的整数 $n$、$i$ 和 $j$ 组成($1 \leq n \leq 10^{5}$ 且 $1 \leq i, j \leq 2n$)。
输出格式
输出一个整数,表示将第 $i$ 张牌带到第 $j$ 个位置所需的最少洗牌次数。如果不可能做到,则输出 $-1$。
说明/提示
翻译由 DeepSeek V3.2 完成