[BOJ 22866] 탑 보기

View as PDF

Submit solution

Points: 3
Time limit: 1.5s
Memory limit: 1G

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

일직선으로 다양한 높이의 건물이 총 $N$개가 존재한다. 각 건물 옥상에서 양 옆에 존재하는 건물의 옆을 몇 개 볼 수 있는지 궁금해졌다.</p>

$i$번째 건물 기준으로 $i - 1$, $i - 2$, ..., $1$번째 건물은 왼쪽에, $i + 1$, $i + 2$, ..., $N$번째 건물은 오른쪽에 있다. 각 건물 사이의 거리는 다 동일하다.

현재 있는 건물의 높이가 $L$이라고 가정하면 높이가 $L$보다 큰 곳의 건물만 볼 수 있다.

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

번호 1 2 3 4 5 6 7 8
높이 3 7 1 6 3 5 1 7
보이는 건물 번호 2 x 2, 4, 8 2, 8 2,4,6,8 2,4,8 2,4,6,8 x

각 건물에서 볼 수 있는 건물들이 어떤것이 있는지 구해보자.

입력 형식

첫번째 줄에 건물의 개수 $N$이 주어진다.</p>

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

출력 형식

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

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

예제 입력

8
3 7 1 6 3 5 1 7

예제 출력

1 2
0
3 2
2 2
4 4
3 4
4 6
0

Comments

There are no comments at the moment.