编程题
### 问题描述 在未来的某一天,地球联邦收到了来自遥远星系的一封求援信。为了援救被困在遥远星球上的居民,地球联邦决定派出一支由 $K$ 名宇航员和一个导师组成的救援队伍。他们会乘坐宇宙飞船前往遥远星系,然后入住星际驿站进行最后的准备。 星际驿站内部是一个 $N \times M$ 的矩阵布局,共有 $N \times M$ 个房间,每个房间 $(i, j)$ 可以容纳 $A(i, j)$ 人。房间 $(i_1, j_1)$ 和房间 $(i_2, j_2)$ 之间的距离为 $\max(|i_1 - i_2|, |j_1 - j_2|)$,其中 $|X|$ 表示 $X$ 的绝对值。 为了确保行动的顺利进行,需要安排导师和宇航员们的住宿,使得导师和最远的宇航员之间的距离尽可能小。注意,导师和宇航员可以住在同一个房间。 你的任务是找到导师和最远宇航员之间的最小距离。如果星际驿站的总容量小于 $K + 1$,则打印 $-1$。 ### 输入格式 输入的第一行包含一个单独的整数 $T$ ,表示测试用例的数量。 每个测试用例的第一行包含三个空格分隔的整数 $N$,$M$ 和 $K$ ——驿站的行数、列数和宇航员的数量。 接下来的 $N$ 行,每行包含 $M$ 个空格分隔的整数,表示每个房间的容量。 ### 输出格式 对于每个测试用例,输出在新行中,导师和最远宇航员之间的最小距离。 如果星际驿站的总容量小于 $K + 1$,则打印 $-1$。 ### 样例输入 ```text 4 1 7 5 2 1 0 1 3 0 1 2 4 3 1 0 4 0 0 2 0 3 2 2 7 1 0 4 1 3 2 3 0 2 1 0 1 0 ``` ### 样例输出 ```text 3 0 -1 1 ``` ### 说明 测试用例 1:导师可以待在房间 $(1, 2)$,两个宇航员在房间 $(1, 1)$,一个宇航员在房间 $(1, 4)$ 和两个宇航员在房间 $(1, 5)$。最远的宇航员房间是 $(1, 5)$,距离为 $3$。没有其他的安排可以使得距离小于 $3$。 测试用例 $2$:导师和所有 $3$ 个宇航员可以待在房间 $(1, 3)$。因此,距离是 0。 测试用例 3:星际驿站的容量不足。 ### 评测数据范围 $1 \leq T \leq 500$。 $1 \leq N, M \leq 10^6$。 $1 \leq K \leq 10^9$。 $0 \leq A(i, j) \leq 10^5$。 对所有测试用例,$N \times M$ 的总和不超过 $10^6$。
查看答案
赣ICP备20007335号-2