파일 업로드

계곡의 크기

profile
실행 시간 제한메모리 제한
2 초512 MB
📃 해결할 문제

다희는 돌아다니면서 경치를 구경하는 것을 좋아하며, 오늘 그녀는 경치 좋은 계곡을 찾고 있습니다.

각 셀마다 높이가 있는 N×NN \times N 셀 격자가 있을 때, 이 정사각형 격자 바깥의 모든 셀은 무한대의 높이를 가지고 있다고 간주할 수 있습니다.

계곡은 이 격자에서 인접하고 구멍이 없으며, 영역을 둘러싼 주변의 모든 셀이 해당 영역의 모든 셀보다 높은 영역을 말합니다.

즉:

  • 셀들의 집합이 '가장자리-연속'이라고 불리는 경우는 위, 아래, 왼쪽, 오른쪽으로 이동하는 일련의 이동을 통해 집합의 어떤 셀에서든 다른 셀에 도달할 수 있는 경우를 말합니다.
  • 셀들의 집합이 '점-연속'이라고 불리는 경우는 위, 아래, 왼쪽, 오른쪽, 또는 대각선으로 이동하는 일련의 이동을 통해 집합의 어떤 셀에서든 다른 셀에 도달할 수 있는 경우를 말합니다.
  • '영역'은 비어 있지 않은 가장자리-연속 셀의 집합을 의미합니다.
  • 영역이 '구멍이 있는'이라고 불리는 경우는, 그 지역의 여집합(이는 N×NN \times N 격자 밖의 무한대 셀들을 포함)이 점-연속이지 않다는 뜻입니다.
  • 영역의 '경계'는 영역 내의 어떤 셀에 상하좌우로 인접해 있지만 영역 자체에 포함되지 않는 셀의 집합을 의미합니다.
  • '계곡'은 지역의 모든 셀이 해당 지역의 경계선에 있는 모든 셀보다 낮은 높이를 가진 구멍이 없는 비곡선형 영역을 의미합니다.

다희의 목표는 모든 계곡의 크기 합을 구하는 것입니다.

예시

이것은 영역입니다:

oo.
ooo
..o

이것은 영역이 아닙니다 (가운데 셀과 오른쪽 아래 셀이 가장자리-연속이 아닙니다):

oo.
oo.
..o

이것은 구멍이 없는 영역입니다:

ooo
o..
o..

이것은 구멍이 있는 영역입니다 ("도넛" 모양 안의 단일 셀이 영역 "외부"와 점-연속성이 아닙니다):

ooo
o.o
ooo

이것은 또 다른 구멍이 없는 영역입니다 (중앙에 있는 단일 셀이 오른쪽 아래 모서리의 셀과 점-연속성이 있습니다):

ooo
o.o
oo.
💻 입력

첫 번째 줄에는 정수 NN, 1N7501 \le N \le 750이 들어 있습니다.

다음 NN 줄에는 각각 NN개의 정수가 있고, 이는 격자 셀의 높이입니다. 각 높이 hh1h1061 \le h \le 10^6에 만족할 것입니다. 모든 높이는 개별된 정수입니다.

최소 19%의 테스트 케이스에서 N100N \leq 100이 보장됩니다.

🖨️ 출력

출력은 단일 정수로, 모든 계곡의 크기의 합입니다.


💻 예제 입력 1
3
1 10 2
20 100 30
3 11 50
🖨️ 예제 출력 1
30

💡 힌트

이 예시에서, 크기 1인 계곡이 세 개 있습니다:

o.o
...
o..

크기 2인 계곡이 하나 있습니다:

...
...
oo.

크기 3인 계곡이 하나 있습니다:

ooo
...
...

크기 6인 계곡이 하나 있습니다:

ooo
o..
oo.

크기 7인 계곡이 하나 있습니다:

ooo
o.o
oo.

그리고 크기 9인 계곡이 하나 있습니다:

ooo
ooo
ooo

따라서, 답은 1 + 1 + 1 + 2 + 3 + 6 + 7 + 9 = 30입니다.


출처: USACO 2019 US Open Contest, Platinum Problem 3. Valleys