填数游戏
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小A在玩一个填数游戏。
游戏的规则是这样的:一共有n个数和n个待填空位(每个数和每个空位一一对应),小A手上有m个数(),小A可以从这m个数选取n个数填入空位中,他可以得到的分数就是每个空位对应的数乘上小A在空位上填入的数字的和。
现在小A想问你,他可以得到的最大分数是多少?
注意,小A必须将所有空格都填上数字。

输入描述:

第一行两个数,n和m,分别代表代填空位有n个,小A手上有m个数。
第二行n个数a_i,表示第i个代填空位对应的数。
第三行m个数b_i,表示小A可以填入空位的数(每个数只能用一次)。

输出描述:

一个数ans表示小A可以得到的最大分数。
示例1

输入

复制
3 3
1 2 3
1 1 1

输出

复制
6

备注:

对于的数据,有
对于的数据,有
对于另外的数据,有
对于的数据,有