Advertisement
mskf

Untitled

Aug 22nd, 2020
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.57 KB | None | 0 0
  1. n, w, p = map( int, input().split() )
  2. weights = [ ]
  3. for i in range( n ): weights += [ int( input() ) ]
  4. # weights = list( map( int, input().split() ) )
  5.  
  6. dp = [ [ 0 ] * n for _ in range( w + 1 ) ]
  7.  
  8. counter = [ [ 0 ] * n for _ in range( w + 1 ) ]
  9.  
  10. dp[ 0 ][ 0 ] = 1
  11.  
  12. res = 0
  13.  
  14. for i in range( w + 1 ):
  15. for j in range( n ):
  16. if j:
  17. dp[ i ][ j ] = (dp[ i - weights[ j ] ][ j - 1 ] if i - weights[ j ] > -1 else 0) + dp[ i ][ j - 1 ]
  18. elif i:
  19. dp[ i ][ j ] = i == weights[ j ]
  20. res = (res + dp[ i ][ -1 ]) % p
  21. print( res )
  22.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement