Một kho hàng được biểu diễn bằng lưới ô vuông gồm \(m\) hàng và \(n\) cột. Hàng được đánh số từ \(1\) đến \(m\) (từ trên xuống), cột được đánh số từ \(1\) đến \(n\) (từ trái sang phải). Ô ở hàng \(i\), cột \(j\) được gọi là ô \((i, j)\).
Một robot vận chuyển bắt đầu ở ô \((1,1)\) và cần tới ô \((m,n)\). Ở mỗi bước, robot chỉ được di chuyển sang ô kề bên phải \((i, j+1)\) hoặc ô kề phía dưới \((i+1, j)\). Trong kho có \(k\) ô bị chất đồ, robot tuyệt đối không được bước vào các ô này.
Hai lộ trình được coi là khác nhau nếu tồn tại một ô nằm trên lộ trình này mà không nằm trên lộ trình kia.
Yêu cầu: đếm số lộ trình khác nhau đưa robot từ \((1,1)\) đến \((m,n)\), tránh các ô bị chất đồ. Vì kết quả có thể rất lớn, hãy in ra phần dư khi chia cho \(10^9+7\).
Input
- Dòng đầu tiên chứa ba số nguyên dương \(m, n, k\).
- \(k\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(h_i, c_i\) cho biết ô \((h_i, c_i)\) bị chất đồ.
- Đảm bảo hai ô \((1,1)\) và \((m,n)\) không bị chất đồ.
Output
Một số nguyên duy nhất: số lộ trình theo modulo \(10^9+7\).
Constraints
- \(1 \le m, n \le 10^5\); \(0 \le k \le 2000\).
- \(1 \le h_i \le m\); \(1 \le c_i \le n\).
- 40% số test: \(m, n, k \le 1000\).
- 20% số test: \(k = 0\), \(10^4 \le m, n \le 10^5\).
- 20% số test: \(k = 1\), \(10^4 \le m, n \le 10^5\).
- 20% số test: \(1 \le k \le 2000\), \(10^4 \le m, n \le 10^5\).
Sample Input
4 5 3
1 3
2 2
4 4
Sample Output
1
Explanation
Chỉ có đúng một lộ trình hợp lệ: \((1,1) \to (2,1) \to (3,1) \to (3,2) \to (3,3) \to (3,4) \to (3,5) \to (4,5)\). Các hướng đi khác đều bị chặn bởi ô \((1,3)\), \((2,2)\) hoặc \((4,4)\).
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.