Gửi bài giải
Điểm:
10,00
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
XEPBO.INP
Output:
XEPBO.OUT
Tác giả:
Dạng bài
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
Trang trại của Tèo có n con bò tót đánh số từ 1 đến n và m chuồng bò đánh số từ 1 đến m. Các chuồng bò được thiết kế theo hàng ngang từ trái sang phải, chuồng bên trái nhất là chuồng 1, tiếp theo là chuồng 2,..., cuối cùng là chuồng m. Mỗi chuồng có chiều rộng đúng 1 mét, các chuồng kề nhau được ngăn cách bằng một tấm tôn có bề dày không đáng kể. Khoảng cách từ chuồng thứ i đến chuồng thứ j (với mọi 1 ≤ i,j ≤ m) được tính là |j-i| mét. Con bò thứ i (i=1..n) có độ hung hãn là ai, tức là con bò này sẽ rất bực bội nếu nó được xếp vào một chuồng X mà tồn tại một chuồng Y, Y khác X và khoảng cách từ chuồng X đến chuồng Y bé hơn ai và trong chuồng Y có bò.
Yêu cầu: Giúp Tèo đếm số cách xếp n con bò vào n chuồng trong m chuồng, mỗi chuồng không quá một con bò, sao cho không có con bò nào bị bực bội. Hai cách xếp được coi là khác nhau nếu trong hai cách xếp tồn tại một con bò i (với i=1..n) được xếp ở hai chuồng khác nhau.
Dữ liệu: Vào từ tệp văn bản XEPBO.INP theo khuôn dạng:
- Dòng đầu ghi hai số nguyên dương n, m (n ≤ 50; n ≤ m ≤ 104);
- Dòng thứ hai chứa n số nguyên dương a1, a2,..an (ai ≤ m với mọi i =1..n);
Kết quả: Ghi ra tệp văn bản XEPBO.OUT một số nguyên duy nhất là số cách xếp bò theo yêu cầu chia lấy dư cho 109+7.
Ví dụ:
XEPBO.INP XEPBO.OUT
3 4 4
1 2 1
1 3 – 2
3 1 – 2
2 – 1 3
2 – 3 1
Giải thích ví dụ
Có 3 con bò và 4 chuồng thì có 4 cách xếp là:
Dấu – biểu thị chuồng bỏ trống; 1, 2, 3 là số hiệu các con bò.
Ràng buộc:
- Có 2 điểm có a1 = a2 =...= an;
- Có 2 điểm tiếp theo có n ≤ 10;
- Có 3 điểm còn lại không còn ràng buộc gì thêm.