TopCoder

User's AC Ratio

NaN% (0/0)

Submission's AC Ratio

NaN% (0/0)

Tags

Description

如果一個長度為 N 的序列中,數字 1N 皆恰好出現一次,這個序列就被稱作一個排列 (permutation),例如:[1],[3,5,4,1,2],[3,1,2] 都是排列,但 [0],[2,2],[4,3,1] 都不是。

大陸人收到一個長度為 N 的排列 p1,p2,,pN 當作禮物,但比起排列,大陸人更喜歡樹,所以他決定將這個排列轉換成一棵二元樹,他的作法如下:

  • 選取當前序列中最大的元素 x 當作根。
  • 所有在最大元素左邊的元素們會形成 x 的左子樹,建構左子樹的方式與原來的樹相同,如果左邊沒有元素,那麼左子樹就是空的。
  • 所有在最大元素右邊的元素們會形成 x 的右子樹,建構右子樹的方式與原來的樹相同,如果右邊沒有元素,那麼右子樹就是空的。

以下是一個例子,考慮一個排列 p=[3,5,2,1,4],一開始被拿來當根的元素是 p2=5,左子樹和右子樹將分別由 p[11]=[3]p[35]=[2,1,4] 建構而成,最後建構出來的二元樹如下:

di 代表節點 pi 的深度,也就是該點與樹根之間路徑邊的數量,請幫大陸人算出每個點的深度 di 是多少。

Input Format

輸入第一行有一個正整數 N(1N105),代表數列的長度。
數入第二行包含 N 個正整數,代表為一個長度為 N 的排列 p1,p2,,pN

Output Format

請在一行輸出 N 個整數 d1,d2,,dN,代表 N 個節點 p1,p2,,pN 的深度。

Sample Input 1

5
3 5 2 1 4

Sample Output 1

1 0 2 3 1

Sample Input 2

1
1

Sample Output 2

0

Sample Input 3

4
4 3 1 2

Sample Output 3

0 1 3 2

Hints

Problem Source

Codeforces

Subtasks

No. Testdata Range Constraints Score
1 0~2 範例測資 0
2 0~18 無額外限制 100

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1000 524288 65536 1 2
1 1000 524288 65536 1 2
2 1000 524288 65536 1 2
3 1000 524288 65536 2
4 1000 524288 65536 2
5 1000 524288 65536 2
6 1000 524288 65536 2
7 1000 524288 65536 2
8 1000 524288 65536 2
9 1000 524288 65536 2
10 1000 524288 65536 2
11 1000 524288 65536 2
12 1000 524288 65536 2
13 1000 524288 65536 2
14 1000 524288 65536 2
15 1000 524288 65536 2
16 1000 524288 65536 2
17 1000 524288 65536 2
18 1000 524288 65536 2