2334 - 变换change
描述

游园会有有一个项目叫做变换,这个项目的规则如下:

现在有S 和T 两个长度相同的序列,都是由0 和1 构成。

我们想要把S 序列变成T 序列,每次变换我们可以把一个0 变成1,或者把一个1 变成0,

第i 个数改变一次所需要的代价是C_i \times DC_i 是题目给出的,跟位置i 有关,即我们变换第i 个数的时候使用,D 是当前S 和T 里面不匹配的数字的数量。

显然,不同的变换顺序的代价是不一样的。我们希望求出这个最小的变换代价。


输入

输入的第一行是一个整数n,表示序列的长度。

接下来一行有一个长度为n 的序列,表示S 序列,中间有一个空格隔开。

接下来一行有一个长度为n 的序列,表示T 序列,中间有一个空格隔开。

接下来一行有n 个整数,表示C_i,整数用一个空格隔开。


输出

输出最小的变换代价。

样例

输入

3
1 0 1
1 0 1
1 2 3 

输出

0

输入

3
1 0 1
0 1 0
1 2 3

输出

10
提示

【输入输出样例1 说明】

这里S 和T 是完全一样的,所以不需要变换,最小的变化代价是0。

【输入输出样例2 说明】

这里我们先变换第1 个数,花费的代价是C1 × 3 = 3,此时还有3 个数没有匹配好,所以乘

以3,然后我们变换第2 个数,花费的代价是C2 × 2 = 4,此时还有2 个数没有匹配好,所以乘

以2,然后我们变换第3 个数,花费的代价是C3 × 1 = 3,此时只有1 个数没有匹配好,所以乘

以1,总的代价10,为最小代价。

如果我们换种顺序去变换,比如我们先变换第3 个,再变换第2 个,最后变换第1 个,那么花

费的代价就是C3 × 3 + C2 × 2 + C1 × 1 = 14。

数据编号,范围,特殊性质

数据1~3 :n ≤ 10 保证S 和T 最多只有一个数不同

数据4~7: n ≤ 2000 ,1 ≤ Ci ≤ 100

数据8~10: n ≤ 100000 


题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 6
通过次数 3