아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

탑 보기

면접 대비

시간 제한1.5초메모리 제한1024 MB

요약
각 건물에서 왼쪽과 오른쪽으로 보이는 건물의 수를 세고, 가장 가까운 보이는 건물의 번호를 출력한다. 키가 같거나 작은 건물은 더 큰 건물에 가려 보이지 않는다.
난이도

보통10점 중 7점

유형
스택, 배열, 구현, 투 포인터
정답자
아직 제출이 없습니다

문제

일직선 위에 높이가 제각각인 건물 NN개가 있다. 각 건물의 옥상에서 양옆을 바라볼 때 건물의 옆면이 몇 개 보이는지 알아보려 한다.

ii번째 건물을 기준으로 i−1i - 1, i−2i - 2, ..., 11번째 건물은 왼쪽에 있고, i+1i + 1, i+2i + 2, ..., NN번째 건물은 오른쪽에 있다. 이웃한 건물 사이의 거리는 모두 같다.

지금 있는 건물의 높이가 LL이라고 하자. 높이가 LL보다 큰 건물만 볼 수 있다.

바라보는 방향에서 높이가 LL인 건물 뒤에 높이가 LL 이하인 건물이 있으면 그 건물은 가려져 보이지 않는다.

번호12345678
높이37163517
보이는 건물 번호2x2, 4, 82, 82,4,6,82,4,82,4,6,8x

각 건물에서 볼 수 있는 건물이 무엇인지 구해보자.

입력

첫 번째 줄에 건물의 개수 NN이 주어진다.

두 번째 줄에는 NN개의 건물 높이가 공백으로 구분되어 주어진다.

출력

i(1≤i≤N)i(1 \le i \le N)번째 건물에서 볼 수 있는 건물의 개수를 출력한다.

만약 볼 수 있는 건물의 개수가 1개 이상이라면 ii번째 건물에서 거리가 가장 가까운 건물의 번호 중 작은 번호로 출력한다.

제한

  • 1≤N≤100,0001 \le N \le 100,000
  • 1≤L≤100,0001 \le L \le 100,000

예제1

  1. 예제 1

    입력
    8
    3 7 1 6 3 5 1 7
    
    예상 출력
    1 2
    0
    3 2
    2 2
    4 4
    3 4
    4 6
    0