fork download
  1. from random import randint
  2. from time import time
  3. m = 10 ** 9 + 7
  4. t = time()
  5. for _ in xrange(3):
  6. n = 1000
  7. B = [randint(1, 1000) for i in xrange(n)]#map(int, raw_input().split())
  8. dp = [[0 for i in xrange(n + 1)] for j in xrange(n)]
  9. cdp = [[0 for i in xrange(n + 1)] for j in xrange(n)]
  10. dp[0][1] = 1
  11. cdp[0][1] = 1
  12. cdp[0][0] = 1
  13. for i in xrange(1, n):
  14. for j in xrange(1, min(n + 1, B[i] + 1)):
  15. dp[i][j] = cdp[i - 1][j - 1] % m
  16. cdp[i][n] = dp[i][n]
  17. for j in xrange(n - 1, -1, -1):
  18. cdp[i][j] = (cdp[i][j + 1] + dp[i][j])% m
  19. print cdp[-1][0], time() - t
  20.  
Success #stdin #stdout #stderr 0.52s 64784KB
stdin
Standard input is empty
stdout
335032718 0.165478944778
536114289 0.334019899368
732245608 0.481904029846
stderr
Warning: cannot find your CPU L2 cache size in /proc/cpuinfo