SHOW:
|
|
- or go back to the newest paste.
1 | import sys | |
2 | ||
3 | dp = [ [ [0 for _ in range(152)] for _ in range(302) ] for _ in range(302)] | |
4 | mark = [ [ [0 for _ in range(152)] for _ in range(302) ] for _ in range(302)] | |
5 | pas = 0 | |
6 | n = 0 | |
7 | d = 0 | |
8 | ||
9 | def f(id, a, de): | |
10 | if(id == n): | |
11 | return de == d and a == 0 | |
12 | if(a > n//2): | |
13 | return 0 | |
14 | if(mark[id][a][de] == pas): | |
15 | return dp[id][a][de] | |
16 | mark[id][a][de] = pas | |
17 | if(a): | |
18 | dp[id][a][de] = f(id + 1, a - 1, de) + f(id + 1, a + 1, max(de,a+1)) | |
19 | return dp[id][a][de] | |
20 | ||
21 | dp[id][a][de] = f(id + 1, a + 1, max(de,a+1)) | |
22 | return dp[id][a][de] | |
23 | ||
24 | ||
25 | for q in sys.stdin: | |
26 | vet = q.split() | |
27 | n = int(vet[0]) | |
28 | d = int(vet[1]) | |
29 | pas += 1 | |
30 | print ("%d"%f(0,0,0)) |