View difference between Paste ID: D7k3khGL and YVhiGKbG
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))