페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#8748

왼쪽의 더 작은 수 1s 1024MB

문제

길이 N인 수열 A_1, A_2, …, A_N이 주어진다.

i(1 ≤ i ≤ N)에 대해, i보다 왼쪽에 있는 원소들 중에서 A_i보다 작은 값(즉 A_j < A_i)을 가지는 원소들만 고려하자. 그중 i와의 거리가 가장 가까운 원소 A_j(즉 j가 최대인 원소)를 찾고, 그 인덱스 j를 출력하라.

만약 그런 j가 존재하지 않으면 0을 출력한다.


입력

첫째 줄에 정수 N이 주어진다.

둘째 줄에 N개의 정수 A_1, A_2, …, A_N이 공백으로 구분되어 주어진다.

[제한]

  • 1 ≤ N ≤ 500\,000

  • -1\,000\,000\,000 ≤ A_i ≤ 1\,000\,000\,000


출력

첫째 줄에 N개의 정수를 공백으로 구분하여 출력한다.

i번째로 출력하는 값은 i번째 원소 A_i에 대해 “왼쪽에서 자신보다 작은 가장 가까운 원소”의 인덱스이며, 존재하지 않으면 0이다.


예제

6
10 3 7 4 12 2
0 0 2 2 4 0

i = 1: 왼쪽에 원소가 없다 → 0

i = 2: 왼쪽(10) 중 3보다 작은 수가 없다 → 0

i = 3: 왼쪽에서 7보다 작은 수 중 가장 가까운 것은 3(인덱스 2) → 2

i = 4: 왼쪽에서 4보다 작은 수 중 가장 가까운 것은 3(인덱스 2) → 2

i = 5: 왼쪽에서 12보다 작은 수 중 가장 가까운 것은 4(인덱스 4) → 4

i = 6: 왼쪽에서 2보다 작은 수가 없다 → 0


출처

klee
로그인해야 코드를 작성할 수 있어요.