【问题描述】
从前有一个班级有n个小朋友。
现在你获得了这个班级某次考试每个人的成绩,你打算将这些小朋友分成n/2个二人组:排名第一的同学和倒数第一的同学分一组,排名第二的同学与倒数第二的同学分一组,以此类推。
我们定义一个小组的“差异值”为:这一组中分数高的同学的分数减去分数低的同学的分数。请你求出所有小组的差异值之和。
【输入格式】
第一行有一个整数n,表示小朋友的数量
第二行有n个整数,第i个数表示第i个小朋友的成绩
【输出格式】
输出一个正整数,表示所有小组的差异值之和
【输入样例】
6
100 97 86 59 71 81
【输出样例】
72
谢谢
题目说的很清楚了,直接计算就可以了。
如果需要完整代码,请先采纳。
求代码啊啊啊啊啊啊啊啊啊
#include "stdio.h"
#include "stdlib.h"
int * data;
int cmp(const void * a, const void * b)
{
return *(int *)a - *(int *)b;
}
int main()
{
int n = 0;
scanf("%d", &n);
data = (int *)malloc(n * sizeof(int));
for (int i = 0; i < n; i++)
scanf("%d", &data[i]);
printf("scores: ");
for (i = 0; i < n; i++)
printf("%d ", data[i]);
qsort(data, n, sizeof(int), cmp);
printf("\nafter sorting: ");
for (i = 0; i < n; i++)
printf("%d ", data[i]);
int sum = 0;
for (i = 0; i < n / 2; i++)
sum += (data[n - i - 1] - data[i]);
printf("\n%d\n", sum);
return 0;
}
6
100 97 86 59 71 81
scores: 100 97 86 59 71 81
after sorting: 59 71 81 86 97 100
72
Press any key to continue