CCF GESP 2026年3月认证 C++ 4级

编程题
共 2 道 每题 25 分 共计 50 分
第 1 题
山之谷
时间限制:1s 内存限制:512MB

题目描述

现有一片山地,可以视为一个 $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 题
礼盒排序
时间限制:1s 内存限制:512MB

题目描述

商店推出了许多礼盒,每个礼盒中包含 $k$ 件商品,每件商品都有一个价格。

现在需要对这些礼盒进行排序,排序规则如下:

  1. 先按礼盒总价格从小到大排序;
  2. 如果总价格相同,按礼盒中最贵商品的价格从小到大排序;
  3. 如果仍然相同,按礼盒中最便宜商品的价格从小到大排序;
  4. 如果仍然相同,按礼盒编号从小到大排序。

请输出排序后的礼盒编号。

输入格式

第一行包含两个整数 $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
样例解释:

排序过程:

  1. 按总价排序,3 号礼盒总价最小;
  2. 其余总价均为 10,再按最大值排序,4 号最大值更小;
  3. 1 号和 2 号最大值相同,再按最小值排序,2 号更小。

最终顺序为:3 4 2 1

数据范围

保证 $1≤n≤10^3,1≤k≤10,1≤ 商品价格 ≤10^4$。

编程题部分已到底了。