查找成绩差 求解怎么写

查找成绩差
题目描述
查找输出给定总分数的两名学生的数学和英语成绩的差值。
输入描述:
第一行包含一个整数n,学生个数。1 <= n <= 100。 接下来的n行是按学生总成绩从低到高排好的学生成绩列表(输入保证无总成绩相同的学生),每一行是每位学生的总成绩和他的数学、语文、英语成绩, 中间用单个空格隔开。其中各科成绩成绩均为一个不大于100的非负整数。 最后一行为要查询的两名学生的总成绩,以空格隔开。
输出描述:
如果其中至少一位学生的总成绩没有在输入数据范围,则输出 -1。 否则输出两位学生数学和英语成绩差值的绝对值,以空格隔开。
输入样例1:
8
220 67 89 64
237 90 67 80
244 87 66 91
253 73 89 91
258 80 89 89
263 87 98 78
264 88 99 77
265 78 89 98
258 220
输出样例1:
13 25输入样例2:
10
220 67 89 64
237 90 67 80
244 87 66 91
253 73 89 91
258 80 89 89
263 87 98 78
264 88 99 77
265 78 89 98
274 87 89 98
296 99 99 98
277 244

输出样例2:
-1

二维数组吧,a[i][j]表示总分为i的学生的第j个成绩(语文、数学、英语)
然后最后输入的时候再直接输出就好了

测试数据有问题

img

#include <bits/stdc++.h>

using namespace std;
struct f
{
    int z,m,c,e;
}s[101];
int main()
{
    int n,k,l,h=0,sum;;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d%d%d",&s[i].z,&s[i].m,&s[i].c,&s[i].e);
    }
    scanf("%d%d",&k,&l);
    for(int i=1;i<=n;i++)
    {
        if(s[i].z==k)
        {
            h++;
            cout<<abs(s[i].m-s[i].e)<<" ";
        }
        if(s[i].z==l)
        {
            h++;
            cout<<abs(s[i].m-s[i].e)<<" ";
        }
    }
    if(h!=2)
        cout<<-1<<endl;
    return 0;
}