package Ġlesson 4 Ċ Ċ /* Ċ * ĠMinimum Ġtime Ġto Ġcomplete Ġthe Ġpath Ġof Ġfalling Ġleaf s Ċ * Ġ*/ Ċ Ċ class ĠF rog R iver One Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsolution ( 6 , Ġint ArrayOf ( 4 , 4 , 4 , 4 , 3 , 2 , 5 , 6 , 5 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" result Ġ: Ġ Ġ$ result ") ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsolution ( X : ĠInt , ĠA : ĠInt Array ): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( X Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Ġ= Ġhash Set Of < Int >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. X ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . add ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠA . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( set . contains ( A [ i ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset . remove ( A [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( set . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }