# Select K columns from matrix and one element from each row that has maximum sum

Given matrix of size N x M (N- rows, M - columns), given integer value K(K < N and K < M). Select arbitrary K columns and create new matrix of size N x K after that select max element from each row and calculate sum - S. Task is to find such K columns, so that this sum S will be maximum for given matrix N x M and value K.

Example:

K: 2 Matrix: $$\begin{bmatrix}1&2&3&4\\4&3&2&1\\3&1&4&5\end{bmatrix}$$

Select column 1 and 4: $$\begin{bmatrix}1&4\\4&1\\3&5\end{bmatrix}$$

Select maximum values from rows: $$\begin{bmatrix}4\\4\\5\end{bmatrix}$$

We got sum 13, this is maximum sum for given matrix and for given K.

It looks similar weighted assignment problem or weighted bipartite matching, but I don't know how to reduce this task to them.

Thank you!

• Can you edit the question to add a reference to the original problem? Commented Jul 1, 2019 at 5:11
• @Apass.Jack Sorry, I don't have one.
– user107098
Commented Jul 1, 2019 at 6:41
• @Apass.Jack this is from yandex contest
– user107098
Commented Jul 1, 2019 at 7:33
• Then why not tell the name and the year of that Yandex context as well as the problem number or id? Per your description, an answer of NP-hard, although enlightening, does not fit the situation at all. Commented Jul 1, 2019 at 13:13
• Let me emphasize, reference, reference and reference. Even if the source is only available in Russia or another much less popular language, a reference to it is still invaluable. Commented Jul 1, 2019 at 13:17