上海网站开发平台,肇庆市公共资源交易中心,班级网站首页怎么做,做高考题的网站文章目录 题目描述输入描述输出描述样例1解释:样例2代码 题目描述
公司组织了一次考试,现在考试结果出来了#xff0c;想看一下有没人存在作弊行为,但是员工太多了,需要先对员工进行一次过滤,再进一步确定是否存在作弊行为。
过滤的规则为:找到分差最小的员工ID对(p1,p2)列表… 文章目录 题目描述输入描述输出描述样例1解释:样例2代码 题目描述
公司组织了一次考试,现在考试结果出来了想看一下有没人存在作弊行为,但是员工太多了,需要先对员工进行一次过滤,再进一步确定是否存在作弊行为。
过滤的规则为:找到分差最小的员工ID对(p1,p2)列表,要求p1p2
员工个数取值范国:On100000
员工ID为整数,取值范围:0n100000
考试成绩为整数,取值范围:0score300
输入描述
员工的ID及考试分数
输出描述
分差最小的员工ID对(p1,p2)列表,要求p1p2。每一行代表一个集合,每个集合内的员工ID按顺序排列,多行结果也以员工对中p1值大小升序排列(如果p1相同则p2升序)。
样例1
输入
5
1 90
2 91
3 95
4 96
5 100输出:
1 2
3 4解释:
输入第一行为员工个数n后续的n行第一个数值为员工ID,第二个数值为员工考试分数
输出:员工1和员工2的分差为1,员工3和员工4的分差也为1,因此最终结果为
1 2
3 4样例2
输入
5
1 90
2 91
3 92
4 85
5 86输出
1 2
2 3
4 5 代码
#include stdio.h
#include stdlib.h
#include string.h
#define MAX 100000
// 定义结构体用于存储员工的ID和分数
typedef struct {int id;int score;
} pairs;
// 定义比较函数用于qsort函数对员工按照id进行排序
int cmp(const void *a, const void *b) {int id1 ((pairs *)a)-id;int id2 ((pairs *)b)-id;return id1 - id2;
}
int main() {int n;scanf(%d, n);// 创建一个动态数组用于存储员工的ID和分数pairs *p (pairs *)malloc(n * sizeof(pairs));for (int i 0; i n; i) {scanf(%d %d, p[i].id, p[i].score);}int min 300;for (int i 0; i n - 1; i) {min abs(p[i 1].score - p[i].score) min? abs(p[i 1].score - p[i].score): min;}// 创建一个动态数组用于存储分差最小的员工ID对pairs *res (pairs *)malloc(n * sizeof(pairs));int count 0;for (int i 0; i n - 1; i) {// 如果当前分差等于最小分差则将当前员工ID对添加到结果动态数组中if (abs(p[i 1].score - p[i].score) min) {res[count].id p[i].id;res[count].score p[i].score;count;}}qsort(res, count, sizeof(pairs), cmp);// 遍历排序后的员工动态数组计算相邻员工的分差for (int i 0; i count; i) {printf(%d %d\n, res[i].id, res[i].id 1);}return 0;
}