题意:两人各有n,m张牌,交换一张,使得两人手牌加和相等。有多种方法的时候,选交换牌加和小的一组。
解决:挨个寻找就行了。
细节:无。
收获:读对题很要。一开始以为是平均数相等。
解决:挨个寻找就行了。
细节:无。
收获:读对题很要。一开始以为是平均数相等。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n, m;
int a[110], b[110];
int main(){
while(cin >> n >> m && n && m){
int suma = 0, sumb = 0;
int flag = 0;
int minn = 300, mina = 0, minb = 0;
for(int i = 0; i < n; i++){
cin >> a[i];
suma += a[i];
}
for(int j = 0; j < m; j++){
cin >> b[j];
sumb += b[j];
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if( (suma-a[i]+b[j]) == (sumb+a[i]-b[j]) ) {
flag = 1;
if(a[i]+b[j] < minn){
mina = a[i]; minb = b[j];
minn = a[i]+b[j];
}
}
}
}
if(!flag) cout << -1 << endl;
else cout << mina << " " << minb << endl;
}
}