Gán Dấu Đạt Tổng Mục Tiêu

Xem dạng PDF

Gửi bài giải


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

Dạng bài

Cho mảng ~N~ số nguyên không âm và một số nguyên ~T~. Với mỗi phần tử ~a_i~, bạn gán cho nó dấu ~+~ hoặc ~-~. Hãy đếm số cách gán dấu sao cho tổng đại số bằng ~T~.

Ví dụ với mảng ~[1, 1, 1, 1, 1]~ và ~T = 3~:

  • ~+1 +1 +1 +1 -1 = 3~
  • ~+1 +1 +1 -1 +1 = 3~
  • ... tổng cộng ~5~ cách.

Kết quả lấy modulo ~10^9 + 7~.

Input

  • Dòng đầu gồm hai số nguyên ~N~ và ~T~ (~1 \le N \le 30~, ~|T| \le 30000~).
  • Dòng thứ hai gồm ~N~ số nguyên ~a_1, a_2, \ldots, a_N~ (~0 \le a_i \le 1000~).

Output

In ra số cách gán dấu modulo ~10^9 + 7~.

Ví dụ

Input 1
5 3
1 1 1 1 1
Output 1
5
Input 2
3 0
1 2 3
Output 2
2
Giải thích 2

Hai cách: ~+1-2+1 \cdot ... ~. Cụ thể: ~+1+2-3 = 0~ và ~-1-2+3 = 0~.

Giới hạn

Subtask Điểm Giới hạn
1 25% ~N \le 10~, ~a_i \le 10~
2 35% ~N \le 20~, ~a_i \le 100~
3 40% ~N \le 30~, ~a_i \le 1000~

Gợi ý

Gọi ~P~ là tập các phần tử được gán dấu ~+~, ~Q~ là tập phần tử được gán dấu ~-~. Ta có ~\text{sum}(P) - \text{sum}(Q) = T~ và ~\text{sum}(P) + \text{sum}(Q) = \text{total}~. Suy ra ~\text{sum}(P) = \frac{T + \text{total}}{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.