ababup1192
4/25/2015 - 3:35 PM

Equal Total Scores

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;
}