12345678910111213141516171819202122232425262728293031 |
- package main
- import "fmt"
- const MOD int = 1000000007
- func main() {
- var n, s int
- fmt.Scan(&n, &s)
- cards := make([]int, n)
- for i := range cards {
- fmt.Scan(&cards[i])
- }
- dp := make([][]int, n)
- for i := range dp {
- dp[i] = make([]int, s+1)
- }
- dp[0][0] = 2
- if s != 0 {
- dp[0][1] = 1
- }
- for i := 1; i < n; i++ {
- for j := 0; j <= s; j++ {
- dp[i][j] = (2 * dp[i-1][j]) % MOD // Not win
- if j > 0 {
- dp[i][j] = (dp[i][j] + dp[i-1][j-1]) % MOD // Win
- }
- }
- }
- fmt.Println(dp[n-1][s])
- }
|