package Ġme . byte beats . algo . kt . design Ċ Ċ import Ġjava . util .* Ċ Ċ class ĠRandom ized Set () Ġ{// 3 8 0 ĊĊĠĠĠ Ġ/** ĠInitialize Ġyour Ġdata Ġstructure Ġhere . Ġ*/ ĊĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < Int , ĠInt >() ĊĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Int >() ĊĠĠĠ Ġval Ġrand Ġ= ĠRandom () ĊĊĠĠĠ Ġ/** ĠInser ts Ġa Ġvalue Ġto Ġthe Ġset . ĠReturns Ġtrue Ġif Ġthe Ġset Ġdid Ġnot Ġalready Ġcontain Ġthe Ġspecified Ġelement . Ġ*/ ĊĠĠĠ Ġfun Ġinsert (` val `: ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( map . containsKey (` val ` )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġmap [` val `] Ġ= Ġlist . size ĊĠĠĠĠĠĠĠ Ġlist . add ( list . size , Ġ` val `) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠRemoves Ġa Ġvalue Ġfrom Ġthe Ġset . ĠReturns Ġtrue Ġif Ġthe Ġset Ġcontained Ġthe Ġspecified Ġelement . Ġ*/ ĊĠĠĠ Ġfun Ġremove (` val `: ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! map . containsKey (` val ` )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġlist . last () ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġmap [` val `] Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġmap [ last ] Ġ= Ġidx ĊĠĠĠĠĠĠĠ Ġlist [ idx ] Ġ= Ġlast ĊĠĠĠĠĠĠĠ Ġlist . remove At ( list . last Index ) ĊĠĠĠĠĠĠĠ Ġmap . remove (` val `) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠGet Ġa Ġrandom Ġelement Ġfrom Ġthe Ġset . Ġ*/ ĊĠĠĠ Ġfun ĠgetRandom (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġrand . nextInt ( list . size ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist [ r ] ĊĠĠĠ Ġ} Ċ Ċ }