Equal Total Scores
#include<stdio.h>
int main(){
int n, m, s, i;
int taro[1000];
int hana[1000];
int t_score, h_score, x;
int t_card, h_card;
while(1){
// カード枚数の入力
scanf("%d %d", &n, &m);
if(n==0 && m==0)break;
// 合計点数と持ちカードの初期化
t_score=0;
h_score=0;
for(i=0;i<1000;i++){
taro[i]=0;
hana[i]=0;
}
// 入力から、持ちカードと点数の合計を求める
for(i=0;i<n;i++){
scanf("%d", &s);
taro[s]=1;
t_score+=s;
}
for(i=0;i<m;i++){
scanf("%d", &s);
hana[s]=1;
h_score+=s;
}
// 点数の差(の半分)を求めておく
x = (t_score - h_score) / 2;
// 交換候補のカードが見つからなかった場合は -1
t_card=-1;
h_card=-1;
// 交換候補のカードを探す(0 ~ 100 までの間)
for(i=0;i<=100;i++){
// 点数の差を利用して、交換候補のカードであるかどうかを判断
if(0<=i+x && taro[i]==1 && hana[i+x]==1){
// 条件に合う候補を設定して、ループを抜ける。
t_card=i;
h_card=i+x;
break;
}
}
// 点数が同じであったか、 交換候補のカードが見つからなかった場合は、 -1 と出力
if((h_score - t_score) % 2!=0 || t_card==-1){
printf("-1\n");
// 交換候補のカードがある場合は、それを出力
}else{
printf("%d %d\n", t_card, h_card);
}
}
return 0;
}