import Ġcom . google . common . collect . Sets . combin ations Ċ Ċ internal Ġval ĠCON TAIN ERS Ġ= Ġ""" ĊĠĠĠĠ 3 3 ĊĠĠĠĠ 1 4 ĊĠĠĠĠ 1 8 ĊĠĠĠĠ 2 0 ĊĠĠĠĠ 4 5 ĊĠĠĠĠ 3 5 ĊĠĠĠĠ 1 6 ĊĠĠĠĠ 3 5 ĊĠĠĠĠ 1 ĊĠĠĠĠ 1 3 ĊĠĠĠĠ 1 8 ĊĠĠĠĠ 1 3 ĊĠĠĠĠ 5 0 ĊĠĠĠĠ 4 4 ĊĠĠĠĠ 4 8 ĊĠĠĠĠ 6 ĊĠĠĠĠ 2 4 ĊĠĠĠĠ 4 1 ĊĠĠĠĠ 3 0 ĊĠĠĠĠ 4 2 Ċ """. trim Indent (). lines (). map Ġ{ Ġit . toInt () Ġ} Ċ Ċ internal Ġconst Ġval ĠEXPECT ED _ VOLUME Ġ= Ġ 1 5 0 Ċ Ċ internal Ġfun Ġgenerate Combin ations Of Indices ( numberOf Elements : ĠInt ): ĠList < Set < Int >> Ġ{ ĊĠĠĠ Ġval Ġindices Ġ= Ġ( 0 Ġuntil ĠnumberOf Elements ). toSet () ĊĠĠĠ Ġreturn Ġ( 1 .. numberOf Elements ). flatMap Ġ{ Ġsize Ġ-> Ġcombinations ( indices , Ġsize ) Ġ} Ċ } Ċ Ċ internal Ġfun Ġindexes To Sum Of Container Volumes ( indices : ĠSet < Int >): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġindices . fold ( 0 ) Ġ{ Ġacc , Ġidx Ġ-> Ġacc Ġ+ ĠCON TAIN ERS [ idx ] Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġgenerate Combin ations Of Indices ( CONTAIN ERS . size ) ĊĠĠĠĠĠĠĠ Ġ. map (:: indexes To Sum Of Container Volumes ) ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ== ĠEXPECT ED _ VOLUME Ġ} ĊĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġprintln (" Number Ġof Ġcombinations Ġthat Ġholds Ġ$ EXPECTED _ VOLUME Ġlit ers : Ġ${ it . size }") Ġ} ĊĊĠĠĠ Ġval Ġm Ġ= Ġgenerate Combin ations Of Indices ( CONTAIN ERS . size ) ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġc Ġ-> Ġc Ġto Ġindexes To Sum Of Container Volumes ( c ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ(_, Ġsize ) Ġ-> Ġsize Ġ== ĠEXPECT ED _ VOLUME Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( set , Ġ_) Ġ-> Ġset Ġto Ġset . size Ġ} ĊĠĠĠĠĠĠĠ Ġ. toMap () ĊĊĠĠĠ Ġm . filter Values Ġ{ Ġit Ġ== Ġm . values . min OrNull () Ġ} ĊĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġprintln (" Number Ġof Ġcombinations Ġwith Ġsmallest Ġ(${ m . values . min OrNull () }) Ġnumber Ġof Ġcontainers : Ġ${ it . size }") Ġ} Ċ } Ċ