package Ġcs . put . pmd s . lab 9 Ċ Ċ import Ġjava . io . File Ċ import Ġkotlin . system . measure Time Millis Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġrequire ( args . size Ġ== Ġ 2 ) Ġ{ Ġ" usage : Ġ< input Ġpath > Ġ< output Ġpath >" Ġ} ĊĠĠĠ Ġval Ġ( input , Ġoutput ) Ġ= Ġargs ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( input ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( it . exists ()) Ġ{ Ġ" file Ġdoes Ġnot Ġexist " Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġmem Ġ= ĠRuntime . get Runtime (). free Memory () ĊĠĠĠ Ġval Ġmeasured Time Ġ= Ġmeasure Time Millis Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( users , Ġsongs Users ) Ġ= Ġfetch Users ( file ) ĊĠĠĠĠĠĠĠ Ġprintln (" used Ġmem : Ġ${ mem Ġ- ĠRuntime . get Runtime (). free Memory ()} Ġsongs : Ġ${ users . size }") ĊĠĠĠĠĠĠĠ Ġval Ġtotal Ġ= Ġ 1 0 0 0 0 L // user S ongs . size . to Long () ĊĠĠĠĠĠĠĠ Ġcount And Write Coefficient ( total , Ġusers , Ġoutput , Ġ{ u Ġ-> Ġu . get Ne ighbours ( songs Users , Ġusers )}) Ġ{ Ġu 1 , Ġu 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj ac card Coef ( u 1 . fav our ites , Ġu 2 . fav our ites ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprintln (" total Ġtime : Ġ$ meas ured Time ") Ċ }