libdo

Untitled

Oct 14th, 2017
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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))
Add Comment
Please, Sign In to add comment