#118. Tìm kho báu (TREASURE)

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

Để tìm kiếm tài nguyên khoáng sản, các nhà khoa học đã phát triển một loại máy quét đặc biệt.

Chúng ta biểu diễn khu vực tìm kiếm bằng một bảng gồm k hàng và n cột. Các hàng được đánh số từ 1 đến k từ trên xuống dưới, và các cột được đánh số từ 1 đến n từ trái sang phải. Trong mỗi ô có thể tồn tại tài nguyên khoáng sản.

Máy quét hoạt động như sau: nó có thể được khởi động tại cột thứ p và trả về số lượng ô chứa khoáng sản trong khu vực quét. Khu vực quét bao gồm tất cả các ô ở cột p , k-1 ô đầu tiên của cột p-1 , k-2 ô đầu tiên của cột p-2 , và cứ thế tiếp tục. Hình dưới đây minh họa các khu vực quét với các giá trị p khác nhau khi k = 3 n=5 .

Minh họa các khu vực quét

Bây giờ, cho trước kết quả trả về của máy quét trên tất cả các cột, chúng ta dùng b_p để biểu thị kết quả quét tại cột thứ p . Nếu với một bảng nào đó, ta đã xác định mỗi ô có chứa khoáng sản hay không, và dựa vào bảng đó, kết quả trả về của máy quét khớp với các giá trị b_p đã cho, thì bảng đó được gọi là hợp lệ. Ví dụ, nếu trong ví dụ trên, kết quả trả về của máy quét là [2, 1, 2, 3, 2] , thì dưới đây là một bảng hợp lệ (các ô chứa khoáng sản được biểu thị bằng hình tam giác màu đen):

Hình minh họa cho ví dụ bên dưới

Dựa vào kết quả quét đã cho, hãy xác định số lượng bảng hợp lệ và in ra số lượng đó sau khi lấy modulo cho 10^9 + 7 . Xin lưu ý, máy quét có thể bị lỗi, dẫn đến không có bảng nào hợp lệ, trong trường hợp này hãy in ra 0 .

Dữ liệu:

  • Dòng đầu tiên chứa hai số nguyên n k ( 1 \le n \le 200, 1 \le k \le 7 ), lần lượt là số cột và số hàng.
  • Dòng thứ hai chứa n số nguyên b_1, b_2, \ldots, b_n ( 0 \le b_i \le k^2 ), là kết quả trả về của máy quét tại mỗi cột.

Kết quả: In ra một số nguyên, là số lượng bảng hợp lệ sau khi lấy modulo cho 10^9 + 7 .

Ví dụ:

Dữ liệu:

5 3
2 1 2 3 2

Kết quả:

24

Giới hạn:

  • Subtask #1: 25\% số điểm có n \times k \le 25 .
  • Subtask #2: 25\% số điểm khác có k \le 3 .
  • Subtask #3: 25\% số điểm khác có k \in \{4, 5\} .
  • Subtask #4: 25\% số điểm còn lại không có ràng buộc bổ sung.