修练者
/*
题目描述 Description
酷町堂举办了一次文件操作模拟赛,共有4道题目,现在要按照4道题目的平均分从高到低排序。如果分数相同,保持在输入中的顺序输出。
要求:求平均分要定义成一个返回值为double类型的结构体函数。
输入描述 Input Description
第一行,一个整数n,表示人数
接下来n行,每行有准考证号、第一题分数、第二题分数、第三题分数、第四题分数,准考证号是一个5位的字符串,由字母和数字构成
输出描述 Output Description
n行,每行一个排序后的准考证号
样例输入 Sample Input
5
BM001 100 0 0 100
BM002 100 20 80 80
BM003 100 100 0 100
BM004 100 100 100 0
BM005 100 100 100 100
样例输出 Sample Output
BM005
BM003
BM004
BM002
BM001
数据范围及提示 Data Size & Hint
n<=10000
*/
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct Student{
string id;
int s1,s2,s3,s4;
double a(){
return (s1+s2+s3+s4)/4.0;
}
};
bool cmp(Student a, Student b){
if (a.a()!=b.a()){
return a.a()>b.a();
}
return a.a()>b.a();
}
Student students[10005];
int main() {
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>students[i].id>>students[i].s1>>students[i].s2>>students[i].s3>>students[i].s4;
}
sort(students+1,students+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<students[i].id<<endl;
}
return 0;
}
郁俊阳在2024-10-06 12:41:23追加了内容
5517
郁俊阳在2024-10-06 12:50:36追加了内容
看代码16行