package Ġcom . ded z tb h . ku ant um . common Ċ Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . util .* Ċ import Ġkotlin . math . pow Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠD ED Z TB H Ġon Ġ 2 0 2 0 / 0 9 / 2 5 . Ċ Ġ* ĠProject ĠK u ant um Circuit Sim Ċ Ġ*/ Ċ Ċ /** ĠIO Ġ*/ Ċ @ Jvm Field Ċ var Ġ_ tokenizer : ĠString Tokenizer Ġ= ĠString Tokenizer ("") Ċ fun Ġread (): ĠString Ġ{ ĊĠĠĠ Ġwhile Ġ(!_ tokenizer . hasMore Tokens ()) ĊĠĠĠĠĠĠĠ Ġ_ tokenizer Ġ= ĠString Tokenizer ( reader . readLine () Ġ?: Ġreturn Ġ"", Ġ" Ġ") ĊĠĠĠ Ġreturn Ġ_ tokenizer . nextToken () Ċ } Ċ Ċ fun Ġread Int () Ġ= Ġread (). toInt () Ċ fun Ġread Double () Ġ= Ġread (). toDouble () Ċ Ċ late init Ġvar Ġreader : ĠBufferedReader ĊĊ Ċ /** ĠAlgorithm Ġ*/ Ċ fun Ġ< T Ġ: ĠComparable < T >> ĠList < T >. upper Bound ( key : ĠT ): ĠInt Ġ{ ĊĠĠĠ Ġvar Ġlow Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġhigh Ġ= Ġsize Ġ- Ġ 1 ĊĠĠĠ Ġwhile Ġ( low Ġ< Ġhigh ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmid Ġ= Ġlow Ġ+ Ġ( high Ġ- Ġlow Ġ+ Ġ 1 ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġif Ġ( this [ mid ] Ġ<= Ġkey ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlow Ġ= Ġmid ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhigh Ġ= Ġmid Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġlow Ċ } Ċ Ċ fun Ġall States ( n : ĠInt ) Ġ= ĊĠĠĠ ĠArray ( 2 . 0 . pow ( n ). toInt ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠList ( n ) Ġ{ Ġi Ġ-> Ġ( it Ġshr Ġi ) Ġand Ġ 1 Ġ}. as Re versed () ĊĠĠĠ Ġ} Ċ