#723. Điền mảng (ARRDESC)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Bạn được cho một mảng gồm n số nguyên. Một số vị trí trong mảng có giá trị cho trước, trong khi các vị trí khác có giá trị là 0, biểu thị một giá trị chưa được điền. Nhiệm vụ của bạn là thay thế mỗi số 0 bằng một số nguyên từ 1 đến m sao cho hiệu của hai phần tử liền kề bất kỳ trong mảng có giá trị tuyệt đối không quá 1.

Yêu cầu: Hãy đếm số cách để hoàn thành mảng, theo modulo 10^9+7 .

Dữ liệu:

  • Dòng đầu tiên chứa hai số nguyên n m : kích thước mảng và giới hạn trên cho các giá trị.
  • Dòng thứ hai chứa n số nguyên x_1, x_2, \ldots, x_n : nội dung của mảng.

Kết quả: In ra số cách.

Ví dụ:

Dữ liệu:

3 5
2 0 2

Kết quả:

3

Giải thích: Phần tử ở giữa có thể là 1, 2, hoặc 3.

  • Mảng 2 1 2: |2-1|=1, |1-2|=1 . Hợp lệ.
  • Mảng 2 2 2: |2-2|=0, |2-2|=0 . Hợp lệ.
  • Mảng 2 3 2: |2-3|=1, |3-2|=1 . Hợp lệ.

Có 3 cách.

Giới hạn: 1 \le n \le 10^5 , 1 \le m \le 100 , 0 \le x_i \le m