백준공부/java

[백준] 20949번 효정과 새 모니터 (silver 5

gomduri43 2024. 3. 8. 09:32

import java.io.*;
import java.util.*;

class Point{
    int num;
    int v;
    public Point(int num, int v){
        this.num=num;
        this.v=v;
    }
}
public class Main{
    public static void main(String[] args ) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;
        ArrayList<Point> arr=new ArrayList<>();

        int n=Integer.valueOf(br.readLine());
        for(int i=1; i<=n; i++){
            st=new StringTokenizer(br.readLine());
            int w=Integer.valueOf(st.nextToken());
            int h=Integer.valueOf(st.nextToken());
            arr.add(new Point(i, (int)(Math.pow(w,2)+Math.pow(h,2))));
        }

        Collections.sort(arr, new Comparator<Point>(){
           public int compare(Point o1, Point o2){
               if(o1.v==o2.v){
                   return o1.num-o2.num;
               }
               else{
                   return -(o1.v-o2.v);
               }
           }
        });

        for(int i=0; i<arr.size(); i++){
            bw.write(arr.get(i).num+"\n");
        }
        bw.flush();
    }
}

//간단한 정렬 문제 / 이때 정렬을 할때 굳이 식대로 계산을 할필요 x 모두다 동일한 계산방식으로 결정나므로,
//w,h로 제곱합만해도 충분하다.