class ĠMax Profit 3 Ġ{ ĊĠĠĠ Ġfun Ġmax Profit ( prices : ĠInt Array ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhold 1 Ġ= ĠInt . MIN _ VALUE ĊĠĠĠĠĠĠĠ Ġvar Ġhold 2 Ġ= ĠInt . MIN _ VALUE ĊĠĠĠĠĠĠĠ Ġvar Ġrelease 1 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġrelease 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġprices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease 2 Ġ= Ġrelease 2 . coerce At Least ( hold 2 Ġ+ Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhold 2 Ġ= Ġhold 2 . coerce At Least ( release 1 Ġ- Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease 1 Ġ= Ġrelease 1 . coerce At Least ( hold 1 Ġ+ Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhold 1 Ġ= Ġhold 1 . coerce At Least (- i ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġrelease 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprices : ĠInt Array Ġ= Ġint ArrayOf ( 3 , 3 , 5 , 0 , 0 , 3 , 1 , 4 ) ĊĠĠĠĠĠĠĠ Ġprint (" max Profit Ġ= Ġ${ max Profit ( prices )} ") ĊĠĠĠ Ġ} Ċ } Ċ