paranid5

kekpy

Nov 2nd, 2020
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.42 KB | None | 0 0
  1. n = int(input())
  2. de = 10**9
  3.  
  4. nums = list(map(int, input().split()))
  5. memo = [[0] * n for i in range(n)]
  6.  
  7. for q in range(n):
  8.     memo[q][q] = 1
  9.    
  10. for r in range(1,n):
  11.     i = 0
  12.     q = r
  13.    
  14.     while q < n:
  15.         memo[i][q] = (memo[i + 1][q] + memo[i][q - 1] - memo[i + 1][q - 1]) % de
  16.        
  17.         if nums[i] == nums[q]:
  18.             memo[i][q] = (memo[i][q] % de + memo[i + 1][q - 1] % de + 1) % de;
  19.        
  20.         i += 1
  21.         q += 1
  22.  
  23. print(memo[0][n - 1] % de)
Advertisement
Add Comment
Please, Sign In to add comment