小慕正在处理两个升序排列的整数数组 `array1` 和 `array2`。 她需要从 `array1` 中选一个元素、从 `array2` 中选一个元素,组成一对元素 `(array1[i], array2[j])`。 现在小慕要选择恰好 `k` 个 `(i, j)`,并将这 `k` 对元素的和累加,她想知道这个累加值的最小可能值是多少。 * 每一对的贡献为 `array1[i] + array2[j]`。 * 同一个下标对 `(i, j)` 只能使用一次。 * 即使数值相同,只要下标不同,也视为不同的元素对。
提示:带虚线的词点一下有通俗解释。
输入描述
* 第 1 行:一个整数 `size1`,表示数组 `array1` 的长度。 * 第 2 行:`size1` 个整数,表示数组 `array1`。 * 第 3 行:一个整数 `size2`,表示数组 `array2` 的长度。 * 第 4 行:`size2` 个整数,表示数组 `array2`。 * 第 5 行:一个正整数 `k`,表示需要选择的元素对数量。 * `1 <= size1 <= 100` * `1 <= size2 <= 100` * `1 <= array1[i] <= 1000` * `1 <= array2[j] <= 1000` * `1 <= k <= 10000` * `k <= size1 * size2`
输出描述
输出一个整数,表示满足要求的最小累加和。
示例
示例 1
输入
3 1 1 2 2 1 4 2
输出
4
说明:需要选择 `k=2` 对元素。可以选择: * `(array1[0], array2[0]) = (1, 1)` * `(array1[1], array2[0]) = (1, 1)` 两对贡献分别为 `1+1` 和 `1+1`,总和为 `4`,这是最小值。 注意:同一下标对(例如再次选择 `(0,0)`)属于重复选择,不允许计入。
时间限制 1000 ms · 内存限制 128 MB