Byteotian 动物园即将举行一场大象游行。动物园的员工们鼓励这些庞大的动物排成一列,因为经理希望这是游行的初始队形。
不幸的是,经理亲自来到游行现场,对眼前的景象并不满意——他原本设想的大象排列顺序完全不同。因此,他强行要求按照他的意愿重新排列,声称这样的大象看起来最威严,并让员工们据此重新调整大象的顺序。
由于一群大象移动可能会造成混乱,员工们决定通过每次交换一对大象的方式来重新排列它们。幸运的是,大象在队列中交换位置时不需要彼此相邻。然而,让大象移动并不像听起来那么容易。事实上,为此付出的努力与动物的质量成正比。因此,交换质量分别为 $m_1$ 和 $m_2$ 的一对大象所涉及的努力程度可以估计为 $m_1+m_2$。请问按照经理的意愿重新排列大象所需的最少努力是多少?
请编写一个程序:
- 从标准输入读取动物园中所有大象的质量,以及它们在队列中的当前顺序和期望顺序,
- 确定一个从初始顺序到期望顺序的大象交换序列,使得该序列中所有交换的总努力程度最小,
- 将总努力程度输出到标准输出。
输入格式
标准输入的第一行包含一个整数 $n$ ($2 ≤ n ≤ 1\,000\,000$),表示动物园中大象的数量。为简化起见,我们假设大象的编号从 $1$ 到 $n$。第二行包含 $n$ 个整数 $m_i$ ($100 ≤ m_i ≤ 6\,500$,对于 $1 ≤ i ≤ n$),以空格分隔,表示相应大象的质量(单位:千克)。
输入的第三行包含 $n$ 个两两不同的整数 $a_i$ ($1 ≤ a_i ≤ n$),以空格分隔,表示初始顺序中大象的编号。第四行包含 $n$ 个两两不同的整数 $b_i$ ($1 ≤ b_i ≤ n$),以空格分隔,表示动物园经理期望的顺序中大象的编号。你可以假设序列 $(a_i)$ 和 $(b_i)$ 是不同的。
输出格式
标准输出的第一行且仅包含一行,输出一个整数,表示将大象从初始顺序调整为 $(b_i)$ 所代表的顺序所需的最少总努力程度。
样例
输入 1
6 2400 2000 1200 2400 1600 4000 1 4 5 3 6 2 5 3 2 4 6 1
输出 1
11200
说明 1
一种最优的重排方式包括交换以下几对大象:
- 2 和 5 - 所需努力:2000+1600=3600,达到的顺序:1 4 2 3 6 5,
- 3 和 4 - 所需努力:1200+2400=3600,达到的顺序:1 3 2 4 6 5,
- 1 和 5 - 所需努力:2400+1600=4000,达到的顺序:5 3 2 4 6 1,这正是期望的顺序。