물 뿌리기
시간 제한2.5초메모리 제한1024 MB
N×N 높이 격자에서 한 칸에 상태 X의 물을 뿌린 뒤 확산 규칙이 멈춘 뒤 물이 있는 칸 수를 구한다.
문제
대학원생인 당신은 현재 의 격자 부지에서 물의 흐름에 관해 연구하고 있다. 당신의 목표는 높이가 주어진 개의 격자 칸 중 얼마나 많은 칸에 물이 닿는지를 알아내는 것이다. 수년간의 연구 끝에, 당신은 물이 다음과 같은 규칙에 따라 확산한다는 것을 알아냈다.
-
각 격자 칸에서, 물의 상태는 의 개의 정수 중 하나로 표현할 수 있다. 은 물이 없는 상태이며, 는 물이 있는 상태이다.
-
처음 물을 뿌린 칸에서 물의 상태는 이다.
-
어떠한 칸 에서 인접한 칸으로 물이 확산할 때, 에서의 물의 상태는 영향을 받지 않는다.
-
보다 큰 정수 에 대하여, 물의 상태가 인 칸에서 물은 다음과 같은 규칙에 따라 확산한다.
- 인접한 칸 중 현재 칸과 높이가 같은 모든 칸으로 매초 물이 확산한다. 확산한 물의 상태는 이다. 단, 물의 상태가 이상인 칸으로는 물이 확산하지 않는다.
- 인접한 칸 중 현재 칸보다 높이가 낮은 모든 칸으로 매초 물이 확산한다. 확산한 물의 상태는 이다.
- 임의의 한 칸에서 물이 여러 번 확산할 수 있으며, 모든 칸에서 확산은 동시에 발생한다.
- 동시에 여러 칸에서 한 칸으로 물이 확산한다면, 해당 칸의 물의 상태는 확산한 물의 상태 중 최댓값을 갖는다.
-
칸 에서 물의 상태가 이고, 어떠한 칸에서도 로 물이 확산하지 않는다면 에서 물의 상태는 이다.
두 칸 와 가 서로 인접한다는 것은 임을 의미한다. 이때 는 행 열을 의미한다. 격자의 각 칸의 높이와 최초로 물이 뿌려진 위치가 주어질 때, 물이 더이상 확산하지 않을 만큼 충분히 긴 시간이 흐른 후 물이 있는 칸, 즉 물의 상태가 인 칸의 수를 구하시오.
입력
첫 번째 줄에는 네 정수 , , , 가 공백으로 구분되어 주어진다.
은 격자의 한 변 길이, 는 처음 뿌려진 물의 상태, 는 처음으로 물이 뿌려진 위치를 의미한다.
두 번째 줄부터 개의 줄에 격자 부지가 주어진다. 그중 번째 줄에는 개의 음이 아닌 정수가 공백으로 구분되어 주어진다. 이 중 번째 정수 는 의 높이이다.
출력
물이 더이상 확산하지 않을 만큼 충분히 긴 시간이 흐른 후 물이 있는 칸의 수를 첫 줄에 출력한다.