package Ġday 1 7 Ċ Ċ class ĠPro be Launcher Ġ{ ĊĊĠĠĠ Ġfun Ġcalculate Hit ting Sh ots ( x Range : ĠLong Range , Ġy Range : ĠLong Range ): ĠReport Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġfindings Ġ= Ġmutable ListOf < Long >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 1 .. x Range . last ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ- 1 0 _ 0 0 0 .. 1 0 _ 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġproject ile Ġ= ĠProject ile ( 0 , Ġ 0 , Ġx , Ġy . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhighest Pos Y Ġ= ĠLong . MIN _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( reps Ġin Ġ 1 .. 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject ile Ġ= Ġperform Step On ( project ile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( project ile . pos Y Ġ> Ġhighest Pos Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhighest Pos Y Ġ= Ġproject ile . pos Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Range . contains ( project ile . pos X ) Ġ&& Ġy Range . contains ( project ile . pos Y )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfindings . add ( highest Pos Y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠReport ( find ings . max By OrNull Ġ{ Ġit Ġ} !! , Ġfindings . count (). to Long ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġperform Step On ( project ile : ĠProject ile ): ĠProject ile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Pos X Ġ= Ġproject ile . pos X Ġ+ Ġproject ile . velocity X ĊĠĠĠĠĠĠĠ Ġval Ġnew Pos Y Ġ= Ġproject ile . pos Y Ġ+ Ġproject ile . velocity Y ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Velocity X Ġ= Ġif Ġ( project ile . velocity X Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 L ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( project ile . velocity X Ġ> Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject ile . velocity X Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( project ile . velocity X Ġ< Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject ile . velocity X Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Unhandled Ġvelocity Ġcase . Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnew Velocity Y Ġ= Ġproject ile . velocity Y Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġreturn ĠProject ile ( new Pos X , Ġnew Pos Y , Ġnew Velocity X , Ġnew Velocity Y ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠReport ( val Ġmax Y : ĠLong , Ġval Ġpossible Sh ots Count : ĠLong ) Ċ } Ċ Ċ data Ġclass ĠProject ile ( val Ġpos X : ĠLong , Ġval Ġpos Y : ĠLong , Ġval Ġvelocity X : ĠLong , Ġval Ġvelocity Y : ĠLong )