Pages

Monday 28 January 2013

UVA - 10487 - Closest Sums


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        int cases=1;
        while (true) {
            int n = Integer.parseInt(br.readLine());
            if (n == 0) {
                break;
            }
            sb.append("Case ").append(cases).append(":\n");
            int[] arr = new int[n];
            for (int i = 0; i < n; i++) {
                arr[i] = Integer.parseInt(br.readLine());
            }
            ArrayList<Integer> sum=new  ArrayList<Integer>(n*n);
            for (int i = 0; i < n; i++) {
               for (int j = i; j < n; j++) {
                   if(i!=j){
                       sum.add(arr[i]+arr[j]);
                   }
                }
            }
            Collections.sort(sum);
            int m = Integer.parseInt(br.readLine());
            for(int i = 0; i < m; i++){
                int q=Integer.parseInt(br.readLine());
                int min=Integer.MAX_VALUE,ans=-1;
                for(int j=0;j<sum.size();j++){
                    int dif=Math.abs(q-sum.get(j));
                    if(dif<min){
                        min=dif;
                        ans=sum.get(j);
                    }
                }
                sb.append("Closest sum to ").append(q).append(" is ").append(ans).append(".\n");
            }
            cases++;
        }
        System.out.print(sb);
    }
}

No comments:

Post a Comment