站外入门题一wa求助(不知道怎么判断)
  • 板块题目总版
  • 楼主Tairitsu_Cat
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/8/12 14:49
  • 上次更新2023/11/3 04:17:18
查看原帖
站外入门题一wa求助(不知道怎么判断)
1045213
Tairitsu_Cat楼主2023/8/12 14:49

n 个同学的语数英成绩,请计算他们的总分并根据总分输出前5名同学的姓名和总分(如果总分相同,则语文成绩高者排名靠前;如果语文成绩相同,则数学成绩高者排名靠前;如果数学成绩相同,则英语成绩高者排名靠前;若英语成绩相同,则学号小的排名靠前)

输入格式 第一行输入一个正整数 n(5≤n≤50),代表班级学生人数。 接下来的 n 行每行包含四个数据:姓名 语文成绩 数学成绩 英语成绩 其中,姓名长度不超过5,三科成绩范围为: 0 ∼ 100 0∼100。输入顺序即学号,第一行学号为1,第二行学号为2……

输出格式 输出前五名同学姓名及总分,每行一位同学。 格式为:姓名 总分 我代码

#include<bits/stdc++.h>
using namespace std;
int n;
struct student{
	string  name;
	int ch,m,eng;
	int cnp,id;
    int sum;
}a[100005];
bool cmp(student x,student y){
	if(x.sum!=y.sum){
		return x.sum>y.sum;
	}else{
		return x.id<y.id; 
	}
}

int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i].name>>a[i].ch>>a[i].m>>a[i].eng;
		a[i].sum=a[i].ch+a[i].m+a[i].eng;
	}
	sort(a,a+n,cmp);
	for(int i=0;i<5;i++){
       //这里应该有判断同分谁先输出的,但是我的错了,所以我不放了()
		if(a[i].sum<=a[0].sum){
			cout<<a[i].name<<" "<<a[i].ch+a[i].m+a[i].eng<<endl;
		}
}
	return 0;
}
[acgo的题](https://www.acgo.cn/problemset/1840/info?teamCode=166418176115571507)
2023/8/12 14:49
加载中...