<s> """<STR_LIT>""" <EOL> __author__ = '<STR_LIT>' <EOL> class Solution : <EOL> def candy ( self , ratings ) : <EOL> """<STR_LIT>""" <EOL> length = len ( ratings ) <EOL> dp = [ - <NUM_LIT:1> for _ in xrange ( length ) ] <EOL> dp [ <NUM_LIT:0> ] = <NUM_LIT:1> <EOL> for ind in xrange ( <NUM_LIT:1> , length ) : <EOL> val = ratings [ ind ] <EOL> if ratings [ ind - <NUM_LIT:1> ] < val : <EOL> dp [ ind ] = dp [ ind - <NUM_LIT:1> ] + <NUM_LIT:1> <EOL> elif ratings [ ind - <NUM_LIT:1> ] > val : <EOL> dp [ ind ] = dp [ ind - <NUM_LIT:1> ] - <NUM_LIT:1> <EOL> else : <EOL> dp [ ind ] = <NUM_LIT:1> <EOL> if ind + <NUM_LIT:1> < length and ratings [ ind - <NUM_LIT:1> ] > val and val <= ratings [ ind + <NUM_LIT:1> ] : <EOL> self . re_adjust ( ratings , dp , ind ) <EOL> if ratings [ length - <NUM_LIT:2> ] > ratings [ length - <NUM_LIT:1> ] : <EOL> self . re_adjust ( ratings , dp , length - <NUM_LIT:1> ) <EOL> return sum ( dp ) <EOL> def re_adjust ( self , ratings , dp , ind ) : <EOL> original = dp [ ind ] <EOL> if original == <NUM_LIT:1> : return <EOL> i = ind <EOL> candy = <NUM_LIT:1> <EOL> while i > <NUM_LIT:0> and ratings [ i - <NUM_LIT:1> ] > ratings [ i ] : <EOL> dp [ i ] = candy <EOL> candy += <NUM_LIT:1> <EOL> i -= <NUM_LIT:1> <EOL> if original < <NUM_LIT:1> : <EOL> dp [ i ] = candy <EOL> if __name__ == "<STR_LIT:__main__>" : <EOL> assert Solution ( ) . candy ( [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:9> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:12> , <NUM_LIT:16> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:50> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:3> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] ) == <NUM_LIT> <EOL> assert Solution ( ) . candy ( [ <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:1> ] ) == <NUM_LIT:9> <EOL> assert Solution ( ) . candy ( [ <NUM_LIT:1> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:1> ] ) == <NUM_LIT:11> <EOL> assert Solution ( ) . candy ( [ <NUM_LIT:8> , <NUM_LIT:7> , <NUM_LIT:6> , <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:1> ] ) == <NUM_LIT> </s>
