白駿-大金持ち[7568]


質問する


私たちは身長、体重、この2つの値で人の塊を測ってみました.体重がxkg、身長がycmの人がいれば、その人の体は(x,y)で表されます.2人のAとBのブロックがそれぞれ(x,y),(p,q)の場合,x>pとy>qの場合,AのブロックはBのブロックより「大きい」と述べた.例えば、A、Bの2人のブロックがそれぞれ(56、177)、(45、165)である場合、AのブロックはBより大きいものに相当する.しかし、大きさが決められない場合もあります.例えば、2人のCとDのブロックがそれぞれ(45、181)、(55、173)であれば、体重DはCより重く、身長Cが高いので、「ブロック」だけでは、CとDは誰も相手より高いとは言えない.
N個人のグループでは,一人一人のブロックレベルが自分よりも大きいブロックとして定められている.自分より大きい人にk人がいれば、その人のブロック等号はk+1です.このように等級を決めると、同じブロックの等級の人が何人もいます.以下は5人で構成された集団の中の一人一人の塊とその等号の表です.

上の表はCより大きい人はいないので、Cが1位です.しかも、A、B、Dより大きいのはCだけなので、2位です.またEより大きい人はA B C Dのような4人なのでEの塊は5位上記の場合、3位と4位は存在しない.皆さんはN名の生徒の体重と身長の入力を読んで、一人一人の体の等号を計算します.

入力


1行目は全体人数Nを与える.次のN行では、体重と身長を表す正の整数xとyにそれぞれスペースがあります.

しゅつりょく


入力にリストされている人のブロック数を要求し、最初の行に順番に印刷します.ただし、各ブロックの等号はスペースで区切らなければなりません.

制限


2 ≤ N ≤ 50
10 ≤ x, y ≤ 200

に答える


体重と身長をN名で入力する2次元配列を発表した.その後,自分以外の者のブロックを比較し,ブロックが小さければ等数+1の出力を行うことができる.

ソース

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();

		// person[][0] : 무게
		// person[][1] : 키
		int[][] person = new int[n][2];

		for (int i = 0; i < n; i++) {
			int x = sc.nextInt();
			int y = sc.nextInt();

			person[i][0] = x;
			person[i][1] = y;

		}

		for (int i = 0; i < n; i++) {
			int rank = 1;

			for (int j = 0; j < n; j++) {
				if (i == j) {
					continue;
				}

				if (person[i][0] < person[j][0] && person[i][1] < person[j][1]) {
					rank += 1;
				}
			}

			System.out.print(rank + " ");
		}

	}

}