skm_minmax_cpp(x, s_must)
minimize sum(min(x(i, j) where i <1..n> and j <1..n> each use <1..n> once))1..n>1..n>1..n>
so in case m <= n="" it="" simply="" select="" all="" m="" -="" should="" always="" be="" apply="" on="" matrix="" with=""> n - it is designed as a expectation step in skm_cpp on updating s.=>
it select i in <1..m> such that i has the colwise_min_idx on column j where j has max difference of (colwise_max_val - colwise_min_val), it then remove row i col j from matrix and repeat.1..m>
s_must presents the indices with priority so that the selection must select first indicies within s_must and then select other indicies outside s_must.
an example skm_minmax_cpp is superior in bound worst case compare to greedy: x = [1 100; 4 200; 2 400; 9 900]: greedy 1 then 200, min-max 100 then 2, and greedy give [1 100; 4 200] with 201 and minmax give [1 100; 2 400] with 102.