题目描述:
现有两组服务器QA和B,每组有多个算力不同的CPU,其中AI是A组第i个CPU的运算能力,B1是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的算力尽可能小。
补充说明:
保证两组服务器的初始总算力不同。
答案肯定存在。
示例1
输入:
2 2
1 1.
2 2
输出:
1 2
说明:
从A组中选出算力为1的CPU,与B组中算力为2的进行交换,使两组服务器的算力都等于3.
代码
public class Main {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
int l1= in.nextInt();
int l2= in.nextInt();
//in.nextLine();
int[] lA=new int[l1];//A组cpu算力集合
int[] lB=new int[l2];//B组cpu算力集合
long sumA=0;//A组CPU算了之和
long sumB=0;//B组CPU算了之和
for(int i=0;i<l1;i++){
int temp=in.nextInt();
lA[i]=temp;
sumA+=temp;
}
for (int i = 0; i < l2; i++) {
int temp=in.nextInt();
lB[i]=temp;
sumB+=temp;
}
A:
for (int i = 0; i < l1; i++) {
for (int j = 0; j < l2; j++) {
if (sumA-lA[i]+lB[j] == sumB-lB[j]+lA[i]) {
System.out.print(lA[i]+" "+lB[j]);
break A;
}
}
}
}
}