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