uva 10763


解決策はソートで、1回目はA列、2回目はB列で、それから2回の結果を比較すればいいです.
package test;

import java.util.Arrays;
import java.util.Comparator;



public class Test{
	//    A,B  
	static class AB{
		int A;
		int B;
		public AB(int a, int b) {			
			A = a;
			B = b;
		}		
		
		@Override
		public String toString() {			
			return "["+A+","+B+"]";
		}
	}
	static int n = 10;//    
	static AB[] abs = new AB[n];//    
    public static void main(String[] args) { 
    	//   
        abs[0] = new AB(1,2);
        abs[1] = new AB(1,9);
        abs[2] = new AB(2,5);
        abs[3] = new AB(5,2);
        abs[4] = new AB(9,1);
        abs[5] = new AB(7,3);
        abs[6] = new AB(5,4);
        abs[7] = new AB(3,7);
        abs[8] = new AB(4,5);
        abs[9] = new AB(2,1);
         
        /**
         *      ,  A,  B,    
         */
        Arrays.sort(abs, new Comparator() {

			@Override
			public int compare(AB o1, AB o2) {
				if(o1.A>o2.A){
					return 1;
				}else if(o1.A==o2.A){
					if(o1.B>o2.B)
						return 1;
					return -1;
				}else{
					return -1;
				}
			}
		});
        AB[] abs1 = abs.clone();
        System.out.println(Arrays.toString(abs1));
        
        /**
         *      ,  B,  A,    
         */
        Arrays.sort(abs, new Comparator() {

			@Override
			public int compare(AB o1, AB o2) {
				if(o1.B>o2.B){
					return 1;
				}else if(o1.B==o2.B){
					if(o1.A>o2.A)
						return 1;
					return -1;
				}else{
					return -1;
				}
			}
		});
        System.out.println(Arrays.toString(abs));
        
        //  
        for(int i=0;i