[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