package Ġinfo . la ht . t sp Ċ Ċ import Ġjava . util .* Ċ Ċ interface ĠIC andidate : ĠComparable < IC andidate > Ġ{ ĊĊĠĠĠ Ġvar Ġcandidate : ĠInt Array ĊĠĠĠ Ġvar Ġcost : ĠDouble ĊĊĠĠĠ Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcandidate . size ĊĊĠĠĠ Ġoperator Ġfun Ġget ( index : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcandidate [ index ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġset ( index : ĠInt , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcandidate [ index ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠIC andidate ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcost . compareTo ( other . cost ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠC andidate ( ĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġcandidate : ĠInt Array , ĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġcost : ĠDouble Ġ= ĠDouble . MAX _ VALUE Ċ ): ĠIC andidate Ġ{ ĊĊĠĠĠ Ġfun Ġcopy (): ĠC andidate Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠC andidate ( candidate . clone (), Ġcost ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠSolution ( ĊĠĠĠĠĠĠĠ Ġcandidate : ĠIC andidate , ĊĠĠĠĠĠĠĠ Ġval Ġiteration Data : ĠIteration Data Ċ ): ĠIC andidate Ġby Ġcandidate Ċ