AOJ 1153 - Equal Total Score

7分かかりました.

#include<iostream>
#include<vector>
#include<algorithm>

int main(){
	int n, m;

	while(std::cin >> n >> m, n){
		int s1 = 0, s2 = 0;
		std::vector<int> v1, v2;
		for(int i=0;i<n;i++){
			int j;
			std::cin >> j;
			v1.push_back(j);
			s1 += j;
		}

		for(int i=0;i<m;i++){
			int j;
			std::cin >> j;
			v2.push_back(j);
			s2 += j;
		}

		std::sort(v1.begin(), v1.end());
		std::sort(v2.begin(), v2.end());

		const int INF = 1 << 24;
		int a = INF, b = INF;
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				if(s1 - v1[i] + v2[j] == s2 - v2[j] + v1[i] && v1[i] + v2[j] < a + b){
					a = v1[i];
					b = v2[j];
				}
			}
		}

		if(a == INF){
			std::cout << "-1" << std::endl;
		}else{
			std::cout << a << " " << b << std::endl;
		}
	}
}