만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

가지밭길

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

요약
(0,0)에서 (R,C)까지 가는 단조 격자 경로가 나무 위치를 위쪽과 아래쪽 집합으로 나누는 서로 다른 방법의 수를 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 조합론, 수학
정답자
아직 제출이 없습니다

문제

세로 길이가 RR, 가로 길이가 CC인 직사각형 격자 모양의 가지밭이 있습니다. 거리가 11인 두 격자점 사이에는 두 점을 잇는 선분 모양의 길이 있습니다. 밤고는 매일 출근을 위해 왼쪽 위의 점 (0,0)(0, 0)에서 출발하여 정확히 R+CR+C개의 길을 따라 오른쪽 아래의 점 (R,C)(R, C)까지 이동합니다. 격자점 중 몇 곳에는 귀여운 가지가 심겨 있어서, 이 점들은 지나갈 수 없습니다.

매일 이 밭을 오가던 밤고는 밭을 가로지르는 경로 중 일부가 사실상 같다고 생각합니다. 밤고가 이동한 경로를 따라 격자를 두 영역으로 자르면, 일부 점은 위쪽 영역에, 나머지는 아래쪽 영역에 놓입니다. 두 경로에 대해 각 가지가 위쪽에 속하는지 아래쪽에 속하는지가 완전히 일치하면 두 경로는 같은 것입니다. 밤고의 생각에 서로 다른 경로는 몇 개가 있을까요?

잘라낸 두 영역에 대한 정확한 정의는 노트를 참고해 주세요.

입력

첫 번째 줄에 세 정수 RR, CC, KK가 공백으로 구분되어 주어집니다. RR, CC는 각각 직사각형 격자의 세로, 가로 길이이고, KK는 심겨 있는 가지의 수입니다. (1≤R,C,K≤5 0001 \le R, C, K \le 5\,000)

다음 KK개 줄 각각에 심겨 있는 가지의 위치 (r,c)(r, c)를 나타내는 정수 rr, cc가 공백으로 구분되어 주어집니다. (0≤r≤R  ;0≤c≤C0 \le r \le R\;; 0 \le c \le C)

가지의 좌표는 모두 다르며, (0,0)(0, 0)과 (R,C)(R, C)에는 가지가 심겨 있지 않습니다.

출력

첫 번째 줄에, 밤고의 생각에 서로 다른 경로의 수를 소수 1 000 000 007=109+71\,000\,000\,007 = 10^9+7로 나눈 나머지를 출력합니다.

힌트

격자를 나누는 두 영역이 어떻게 정의되는지 더 엄밀하게 적으면 다음과 같습니다.

  • 밤고가 이동한 경로가 (R,0)(R, 0)을 지나면, 위쪽 영역은 전체집합, 아래쪽 영역은 공집합입니다.
  • 그렇지 않고 경로가 (0,C)(0, C)을 지나면, 아래쪽 영역은 전체집합, 위쪽 영역은 공집합입니다.
  • 두 경우가 아니면, (R,0)(R, 0)을 포함하는 영역을 아래쪽 영역, (0,C)(0, C)을 포함하는 영역을 위쪽 영역이라고 부릅니다.

예제4

  1. 예제 1

    입력
    4 4 3
    1 1
    1 3
    3 1
    
    예상 출력
    4
    
  2. 예제 2

    입력
    4 4 4
    1 1
    1 3
    3 1
    3 3
    
    예상 출력
    6
    
  3. 예제 3

    입력
    10 10 5
    1 1
    3 3
    5 5
    7 7
    9 9
    
    예상 출력
    32
    
  4. 예제 4

    입력
    10 10 5
    1 9
    3 7
    5 5
    7 3
    9 1
    
    예상 출력
    6