小柒的行列改写
题号:NC293615
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小柒最近获得了一个长度为 n 的数组 \{r_1, r_2, \dots, r_n\} 和一个长度为 m 的数组 \{c_1, c_2, \dots, c_m\}。他想用这两个数组来生成一个 nm 列的二维数组,初始时,二维数组中每个元素的值均为 0,随后,他一共会进行 n+m 次操作,每次操作从以下两种覆盖方式中选择一种进行:
\hspace{23pt}\bullet\,行覆盖:选择一个未被选中过的行,记为 i,将第 i 行的所有元素变为 r_i
\hspace{23pt}\bullet\,列覆盖:选择一个未被选中过的列,记为 j,将第 j 列的所有元素变为 c_j
\hspace{15pt}小柒希望最终的二维数组中所有元素之和最大,请你帮他计算这个最大值。

输入描述:

\hspace{15pt}第一行输入两个正整数 n,m\left(1\leq n,m\leq 10^5\right) 代表 r 数组和 c 数组的长度。 
\hspace{15pt}第二行输入 n 个正整数 r_1,r_2,\dots,r_n\left(1\leq r_i \leq 10^6\right) 代表 r 数组的数值。
\hspace{15pt}第三行输入 m 个正整数 c_1,c_2,\dots,c_m\left(1\leq c_i \leq 10^6\right) 代表 c 数组的数值。

输出描述:

\hspace{15pt}输出一个整数,代表最终的二维数组中所有元素之和的最大值。
示例1

输入

复制
3 3
1 2 3
1 2 3

输出

复制
22

说明

\hspace{15pt}在这个样例中,其中一种最优的覆盖方式为:
\begin{CD}<br />\begin{bmatrix}<br />0 & 0 & 0 \\<br />0 & 0 & 0 \\ <br />0 & 0 & 0 \\<br />\end{bmatrix}<br />@>\text{选择第一行}>> <br />\begin{bmatrix}<br />{\color{orange}1} & {\color{orange}1} & {\color{orange}1} \\<br />0 & 0 & 0 \\ <br />0 & 0 & 0 \\<br />\end{bmatrix}<br />@>\text{选择第一列}>><br />\begin{bmatrix}<br />{\color{orange}1} & 1 & 1 \\<br />{\color{orange}1} & 0 & 0 \\ <br />{\color{orange}1} & 0 & 0 \\<br />\end{bmatrix} <br />\\<br />& & & @V\text{选择}V\text{第二行}V<br />\\<br /> & & \begin{bmatrix}<br />1 & {\color{orange}2} & 1 \\<br />2 & {\color{orange}2} & 2 \\ <br />1 & {\color{orange}2} & 0 \\<br />\end{bmatrix}<br />@<<\text{选择第二列}< <br />\begin{bmatrix}<br />1 & 1 & 1 \\<br />{\color{orange}2} & {\color{orange}2} & {\color{orange}2} \\ <br />1 & 0 & 0 \\<br />\end{bmatrix}<br />\\<br />& @V\text{选择}V\text{第三行}V<br />\\<br />& & \begin{bmatrix}<br />1 & 2 & 1 \\<br />2 & 2 & 2 \\ <br />{\color{orange}3} & {\color{orange}3} & {\color{orange}3} \\<br />\end{bmatrix}<br />@>>\text{选择第三列}><br />\begin{bmatrix}<br />1 & 2 & {\color{orange}3} \\<br />2 & 2 & {\color{orange}3} \\ <br />3 & 3 & {\color{orange}3} \\<br />\end{bmatrix}<br />\end{CD}