Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- dp = [ [ [0 for _ in range(152)] for _ in range(302) ] for _ in range(302)]
- mark = [ [ [0 for _ in range(152)] for _ in range(302) ] for _ in range(302)]
- pas = 0
- n = 0
- d = 0
- def f(id, a, de):
- if(id == n):
- return de == d and a == 0
- if(a > n//2):
- return 0
- if(mark[id][a][de] == pas):
- return dp[id][a][de]
- mark[id][a][de] = pas
- if(a):
- dp[id][a][de] = f(id + 1, a - 1, de) + f(id + 1, a + 1, max(de,a+1))
- return dp[id][a][de]
- dp[id][a][de] = f(id + 1, a + 1, max(de,a+1))
- return dp[id][a][de]
- for q in sys.stdin:
- vet = q.split()
- n = int(vet[0])
- d = int(vet[1])
- pas += 1
- print ("%d"%f(0,0,0))
Add Comment
Please, Sign In to add comment