2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)
题目描述
现有两组服务器A和B,每组有多个算力不同的CPU,其中 A[i] 是 A 组第 i 个CPU的运算能力,
B[i] 是 B组 第 i 个CPU的运算能力。
一组服务器的总算力是各CPU的算力之和。
为了让两组服务器的算力相等,允许从每组各选出一个CPU进行一次交换,
求两组服务器中,用于交换的CPU的算力,并且要求从A组服务器中选出的CPU,算力尽可能小。
输入描述
第一行输入为L1和L2,以空格分隔,L1表示A组服务器中的CPU数量,L2表示B组服务器中的CPU数量。
第二行输入为A组服务器中各个CPU的算力值,以空格分隔。
第三行输入为B组服务器中各个CPU的算力值,以空格分隔。
1 ≤ L1 ≤ 10000
1 ≤ L2 ≤ 10000
1 ≤ A[i] ≤ 100000
1 ≤ B[i] ≤ 100000
输出描述
对于每组测试数据,输出两个整数,以空格分隔,依次表示A组选出的CPU算力,B组选出的CPU算力。
要求从A组选出的CPU的算力尽可能小。
备注
保证两组服务器的初始总算力不同。
答案肯定存在
示例一
输入
2 2
1 1
2 2
输出
1 2
说明:
从 A 组中选出算力为 1 的 CPU,与 B 组中算力为 2 的进行交换,使两组服务器的算力都等于 3。
示例二
输入
2 2
1 2
2 3
输出
1 2
考点
逻辑思维
解题思路
计算每组服务器的初始总算力(sumA 和 sumB)。
计算目标差值:
由于要使两组服务器的算力相等,可以计算两者算力之差并除以2,
得到一个目标差值 key。假设A组算力小,将A组升序排序,从最小开始遍历,
A[i]+key得到希望交换的数值b,若b存在数组B中,则立即输出,否则进行下一次遍历,
直至满足条件;当然也要考虑A组算力大于B组的情况。
代码
python
#L1表示A组服务器中的CPU数量,L2表示B组服务器中的CPU数量
L1,L2=list(m