만드는 중입니다

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

격자 이동하기

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

요약
(0,0)에서 (a,b)까지 가는 최단 경로의 수를 10^9+7로 나눈 나머지를 구하며, 일부 좌표에는 대각선 도로가 있습니다.
난이도

보통10점 중 7점

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

문제

동우는 left(a,bright)\\left(a,b\\right) 크기의 특수한 2차원 격자 위에 살고 있다. 이 격자에서 모든 정수 좌표 left(x,yright)\\left( x,y \\right)는 상하좌우로 인접한 좌표와 길이 11인 길로 연결되어 있다. 또한 일부 좌표에는 left(x+1,y+1right)\\left( x+1,y+1 \\right)로 가는 대각선 길도 있으며, 이 길의 길이는 sqrt2\\sqrt{2}이다.

동우는 원점 left(0,0right)\\left( 0,0 \\right)에서 출발해 길을 따라 목표 지점 left(a,bright)\\left( a,b \\right)까지 이동하려고 한다. 이때 동우가 이동할 수 있는 최단 경로의 경우의 수를 구하라.

입력

첫 번째 줄에 목표 지점의 좌표 (a,b)(a,b)를 나타내는 두 정수 a,ba,b가 공백으로 구분되어 주어진다(0leqa,bleq1060\\leq a,b\\leq 10^6, 1leqa+b1\\leq a+b).

두 번째 줄에 대각선 길의 개수 NN이 주어진다(0leqNleqmin(5000,ab)0\\leq N\\leq\\min(5000,ab)).

이후 NN개의 줄에 대각선 길이 있는 정수 좌표 (xi,yi)(x_i,y_i)가 공백으로 구분되어 주어진다. 이는 (xi,yi)(x_i,y_i)와 (xi+1,yi+1)(x_i+1,y_i+1) 사이에 길이 있음을 뜻한다. 같은 좌표는 여러 번 주어지지 않는다.

출력

동우가 이동할 수 있는 최단 경로의 경우의 수를 109+710^9+7로 나눈 나머지를 출력한다. 단, 109+710^9+7은 소수이다.

예제3

  1. 예제 1

    입력
    3 3
    0
    
    예상 출력
    20
    
  2. 예제 2

    입력
    3 3
    9
    0 0
    0 1
    0 2
    1 0
    1 1
    1 2
    2 0
    2 1
    2 2
    
    예상 출력
    1
    
  3. 예제 3

    입력
    3 3
    8
    0 0
    0 1
    0 2
    1 0
    1 2
    2 0
    2 1
    2 2
    
    예상 출력
    8