「SFCOI-4」大户爱的草
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

\hspace{15pt}大户爱随手写了个两个长为 n 的序列 a, b,其中 a_i 为整数,b_i \in \{1, 2\}
\hspace{15pt}她感觉这个 a 并不规整,所以希望通过某些操作更改 a,使得每个整数 i \in [1, n] 都满足:
\hspace{23pt}\bullet\,b_i = 1,则 a_i \leq a_{(i \bmod n + 1)}
\hspace{23pt}\bullet\,b_i = 2,则 a_i \geq a_{(i \bmod n + 1)}
\hspace{15pt}她每次操作可以花费 1 的代价将任意一个 a_i 增加或减少 1
\hspace{15pt}她希望知道最少花费多少代价,可以使 a 满足上述条件。

输入描述:

\hspace{15pt}第一行输入一个整数 n\left(1 \leq n \leq 5 \times 10^5\right),表示序列长度。
\hspace{15pt}第二行输入 n 个整数 a_1, a_2, \dots, a_n \left(1 \leq a_i \leq 10^9\right),表示序列 a
\hspace{15pt}第三行输入 n 个整数 b_1, b_2, \dots, b_n \left(b_i \in \{1, 2\}\right),表示序列 b

输出描述:

\hspace{15pt}在一行上输出一个整数,表示最少花费的代价。
示例1

输入

复制
6
1 1 4 5 1 4
1 2 1 2 1 2

输出

复制
3

说明

\hspace{15pt}在这个样例中,一个可行的方案是:
\hspace{23pt}\bullet\,将 a_3 减少 1 三次。
\hspace{15pt}得到的 a' = \{1, 1, {\color{orange}{1}}, 5, 1, 4\},所花费的代价为 3。可以证明,不存在代价小于 3 的方案。
示例2

输入

复制
6
1 9 1 9 8 10
2 1 2 1 2 1

输出

复制
18

说明

\hspace{15pt}在这个样例中,一个可行的方案是:
\hspace{23pt}\bullet\,将 a_1 增加 1 七次;
\hspace{23pt}\bullet\,将 a_2 减少 1 一次;
\hspace{23pt}\bullet\,将 a_3 增加 1 七次;
\hspace{23pt}\bullet\,将 a_4 减少 1 一次;
\hspace{23pt}\bullet\,将 a_6 减少 1 两次。
\hspace{15pt}得到的 a' = \{{\color{orange}{8}}, {\color{orange}{8}}, {\color{orange}{8}}, {\color{orange}{8}}, 8, {\color{orange}{8}}\},所花费的代价为 18。可以证明,不存在代价小于 18 的方案。