A27943. 分组均衡性
填空题
中等
知识点
题目描述
分组均衡性
题目描述
在上机实验课上,老师将所有学生排列为 n 排,每排坐 m 个学生。每个学生有左右两个邻座(除了这一排的左右两端)。每个人可以和自己的邻座互相帮助完成实验。除了每排左右两端的学生,中间的每个学生都可以同时与两个邻座分别协作。
由于每个学生的个人能力不同,假设协作产生的小组能力值是两个协作学生的能力值之和,老师希望知道,自己给出的座位安排在多大程度上是“均衡”的 —— 所谓分组均衡性,是指所有可能组成的协作小组的能力值的最大值与最小值之差。
给定一张座位安排表,请计算这个安排的分组均衡性。
输入
输入第一行给出 2 个正整数 n 和 m(2 ≤ n, m ≤ 100),依次为座位的排数和每排的人数。 随后 n 行,每行给出 m 个数字,代表对应座位上学生的能力值(为区间 [1, 100] 内的整数)。同行数字间以空格分隔。
输出
在一行中输出分组均衡性。
数据范围
2 ≤ n, m ≤ 100
输入样例
3 5
10 80 30 95 60
79 55 63 84 41
98 23 72 85 58输出样例
67提示
样例解释:最强组合是第 3 排的 72+85=157;最弱组合是第 1 排的 10+80=90。因此两者之差为 67。
参考答案
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[110][110];
int n,m;
cin>>n>>m;
for(int i = 0;i<n;i++)
{
for(int j = 0;j<m;j++)
{
cin>>a[i][j];
}
}
int f = 0;
int p = 9999999;
for(int i = 0;i<n;i++)
{
for(int j = 0;j<m-1;j++)
{
int x = a[i][j] + a[i][j+1];
f = max(f,x);
p = min(p,x);
}
}
cout<<f-p;
return 0;
}
上一题
下一题