#144. 城堡防御矩阵

城堡防御矩阵

题目描述

在遥远的幻想大陆上,有一座神秘的城堡。城堡所属的 E 国以其奇特的树木防御系统闻名,而国王小 E 正为如何优化这一系统而烦恼。传说只有能够破解隐藏在一组数字背后的智慧者,才能为城堡带来最稳固的防御。于是,你受命利用一组矩阵数据,找出最优的排列方式,提升城堡防御的效能。

给定一个 nnnn 列 的矩阵 aa

现有 qq 组询问,每次给定一个数 vv。你可以对矩阵的每一行进行任意重排(也可以选择不重排),目标是使得经过重排后,满足列中最大值不小于 vv 的列数达到最大。请你计算出这个最大列数。

每次询问相互独立,也就是说,每次询问前均可对矩阵重新排列。

输入格式

第一行包含两个正整数 nnqq

接下来的 nn 行,每行包含 nn 个正整数,构成矩阵 aa

接下来 qq 行,每行包含一个正整数 vv,表示一次询问。

输出格式

对于每次询问,输出一个整数,表示经过最优重排后,满足列中最大值不小于 vv 的列数。

样例输入

3 3
9 9 8
2 4 4
3 5 3
5
9
10

样例输出

3
2
0

说明

原矩阵为

[9 9 8]

[2 4 4]

[3 5 3]

对于第一次询问 v=5v=5,每一列经过最优排列后的最大值分别为 9,9,89, 9, 8,均不小于 55,因此答案为 33。注意,每次重排的过程相互独立,且最多只能选出 nn 列。

对于所有数据,满足: 1n1031 \leq n \leq 10^31q5×1051 \leq q \leq 5 \times 10^51ai,j,v1091 \leq a_{i,j}, v \leq 10^9