uva 10763
1683 ワード
解決策はソートで、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