CCF GESP 2026年3月认证 C++ 4级
三
编程题
第 1 题
山之谷
题目描述
现有一片山地,可以视为一个 $N$ 行 $M$ 列的网格图,第 $i$ 行 $j$ 列的海拔为 $h_{i,j}$。
如果一个单元格的海拔不高于其所有相邻单元格(相邻包括上、下、左、右、左上、右上、左下、右下,最多 8 个方向)的海拔,则称该单元格为山谷。
请你数一数该片山地中有多少山谷。
输入格式
第一行包含 2 个整数 N,M,表示山地的大小。
之后 N 行,每行包含 M 个整数 $h_{i,1},h_{i,2},⋯,h_{i,M}$,表示海拔。
输出格式
输出 1 行,包含 1 个整数 C,表示山谷的数量。
样例说明
样例 1
输入:
3 5
7 6 6 7 9
6 5 6 7 6
6 5 7 8 9
输出:
3
样例解释:
样例 1 如图所示,绿色单元格代表山谷:
数据范围
保证 $1≤N,M≤100,1≤h_{i,j}≤10^5$。
第 2 题
礼盒排序
题目描述
商店推出了许多礼盒,每个礼盒中包含 $k$ 件商品,每件商品都有一个价格。
现在需要对这些礼盒进行排序,排序规则如下:
- 先按礼盒总价格从小到大排序;
- 如果总价格相同,按礼盒中最贵商品的价格从小到大排序;
- 如果仍然相同,按礼盒中最便宜商品的价格从小到大排序;
- 如果仍然相同,按礼盒编号从小到大排序。
请输出排序后的礼盒编号。
输入格式
第一行包含两个整数 $n$ 和 $k$,分别表示礼盒数量和每个礼盒中商品的数量。
接下来 $n$ 行,每行包含 $k$ 个整数,第 $i$ 行表示第 $i$ 个礼盒中各商品的价格。
输出格式
输出一行,包含排序后的礼盒编号(编号从 1 开始),用空格分隔。
样例说明
样例 1
输入:
4 3
3 5 2
4 1 5
2 2 4
3 4 3
输出:
3 4 2 1
样例解释:

排序过程:
- 按总价排序,3 号礼盒总价最小;
- 其余总价均为 10,再按最大值排序,4 号最大值更小;
- 1 号和 2 号最大值相同,再按最小值排序,2 号更小。
最终顺序为:3 4 2 1
数据范围
保证 $1≤n≤10^3,1≤k≤10,1≤ 商品价格 ≤10^4$。
编程题部分已到底了。