고인물이싫어

시간 제한1초메모리 제한1024 MB

요약
높이와 하수구 위치가 주어진 격자에서 물이 고이는 칸을 모두 피해 h×w 직사각형을 놓는 방법의 수를 구한다.
난이도

보통10점 중 7점

유형
그래프, BFS, 구현, 누적 합
정답자
아직 제출이 없습니다

문제

비 오는 날 세종이는 부모님의 심부름으로 물을 사러 갔다. 횡단보도 앞에서 신호를 기다리던 세종이는 횡단보도가 평평하지 않아 물이 고인 것을 보았다. 횡단보도는 N×MN\times M 크기의 직사각형 격자 모양이며, 세종이가 서 있는 쪽 맨 앞의 맨 왼쪽 칸을 11행 11열, 맨 오른쪽 칸을 11행 MM열로 부른다.

횡단보도 중 KK개의 칸에는 하수구가 있다. 모든 칸은 상하좌우로 인접한 칸 중 높이가 자신보다 낮거나 같은 칸에 하수구나 물이 빠진 칸이 있으면 물이 빠진다. 하수구가 없는 칸 중 물이 빠지지 않은 칸을 물이 고인 칸이라고 한다. A+B를 풀고 받은 새 신발을 더럽히고 싶지 않았던 세종이는 물이 고인 칸을 밟지 않고 횡단보도를 건너려 한다. 세종이의 새 신발은 횡단보도의 연속된 hh개의 행과 ww개의 열을 덮는 크기의 직사각형 모양이다. 세종이는 횡단보도를 건널 때 항상 신발이 횡단보도의 격자 칸에 꼭 맞게 들어가게 발을 딛으며, 발의 방향을 돌리지 않는다.

횡단보도의 각 칸의 높이가 주어졌을 때, 세종이가 횡단보도에 신발을 더럽히지 않고 한쪽 발을 딛는 방법의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 횡단보도의 크기를 나타내는 두 정수 N,MN,M이 공백으로 구분되어 주어진다. (1≤N,M≤1,000)(1\le N,M\le 1\\, 000)

둘째 줄에 세종이의 신발의 길이와 너비를 나타내는 두 정수 h,wh,w가 공백으로 구분되어 주어진다. (1≤h≤N;(1\le h\le N; 1≤w≤M)1\le w\le M)

그다음 NN개의 줄에 걸쳐, i+2i+2번째 줄에 MM개의 정수 H\[i]\[1],H\[i]\[2],⋯ ,H\[i]\[M]H\[i]\[1] ,H\[i]\[2] ,\cdots ,H\[i]\[M]이 공백으로 구분되어 주어진다. 이때 H\[i]\[j]H\[i]\[j]는 횡단보도의 ii행 jj열에 해당하는 칸의 높이를 의미한다. (1≤H\[i]\[j]≤100)(1 \le H\[i]\[j] \le 100)

N+3N+3번째 줄에 하수구의 수를 나타내는 정수 KK가 주어진다. (1≤K≤N×M)(1\le K\le N\times M)

그다음 KK개의 줄에 걸쳐 하수구의 위치를 나타내는 두 정수 r,cr,c가 공백으로 구분되어 주어진다. 이는 횡단보도의 rr행 cc열에 하수구가 있음을 의미한다. 입력으로 주어지는 위치는 중복되지 않는다. (1≤r≤N;(1\le r\le N; 1≤c≤M)1\le c\le M)

출력

첫째 줄에 세종이가 횡단보도에 한쪽 발을 딛는 방법의 수를 출력한다.

예제1

  1. 예제 1

    입력
    5 5
    2 1
    2 6 7 8 8
    2 3 3 7 9
    4 5 2 6 5
    3 2 1 3 4
    5 7 9 8 1
    2
    2 2
    5 5
    
    예상 출력
    9