DHBB 2023 - LVT - 10 - Xây dựng mảng

Xem dạng PDF

Gửi bài giải

Điểm: 17,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Cho một mảng gồm ~n~ phần tử ~A_1, A_2, \dots, A_n~. Mỗi phần tử là một số nguyên thuộc đoạn ~[0, m]~, trong đó ~m~ là số cho trước ~(1 \le n \le 10^5, 1 \le m \le 100)~.

Hãy đếm số cách thay thế các phần tử có giá trị ~0~ trong mảng bằng các số thuộc đoạn ~[1, m]~ sao cho chênh lệch tuyệt đối giữa hai phần tử liền kề không vượt quá ~1~.

Input

  • Dòng đầu tiên chứa hai số nguyên ~n, m~, lần lượt là kích thước mảng và giới hạn trên của mỗi giá trị;

  • Dòng tiếp theo chứa ~n~ số nguyên ~A_1, A_2, \dots, A_n~ ~(0 \le A_i \le m)~.

Output

In ra số cách xây dựng mảng thỏa mãn yêu cầu, lấy phần dư theo ~10^9+7~.

Scoring

Subtask Điểm Ràng buộc
1 ~50\%~ Trong dãy ~A~ có đúng một phần tử có giá trị bằng ~0~
2 ~50\%~ Không có ràng buộc gì thêm

Sample Input 1

3 5
2 0 2

Sample Output 1

3

Notes

Có ba mảng thỏa mãn yêu cầu là ~[2, 1, 2]~, ~[2, 2, 2]~ và ~[2, 3, 2]~.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.