AOAPC I: Beginning Algorithm Contests (Rujia Liu) :: Volume 4. Algorithm Design
// 10487 - Closest Sums
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
int cnt = 1;
int i, j, k, n, m, sum, near, sum_t, near_t;
int integer[1001], query[25];
while(cin >> n && n != 0)
{
cout << "Case " << cnt++ << ":" << endl;
for(i = 0; i < n; i++)
cin >> integer[i];
cin >> m;
for(i = 0; i < m; i++)
cin >> query[i];
for(k = 0; k < m; k++)
{
near = 0x7fffffff;
for(i = 0; i < n; i++)
for(j = i+1; j < n; j++)
{
if(integer[i] == integer[j])
continue;
sum_t = integer[i] + integer[j];
near_t = abs(sum_t - query[k]);
if(near_t < near)
{
sum = sum_t;
near = near_t;
}
}
cout << "Closest sum to " << query[k] <<" is " << sum << "." << endl;
}
}
return 0;
}