新手光能
5517 考试成绩统计
经验值:800 时间限制:1000毫秒 内存限制:128MB
题目描述 De**ion
酷町堂举办了一次文件操作模拟赛,共有4道题目,现在要按照4道题目的平均分从高到低排序。如果分数相同,保持在输入中的顺序输出。
要求:求平均分要定义成一个返回值为double类型的结构体函数。
输入描述 Input De**ion
第一行,一个整数n,表示人数
接下来n行,每行有准考证号、第一题分数、第二题分数、第三题分数、第四题分数,准考证号是一个5位的字符串,由字母和数字构成
输出描述 Output De**ion
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<cmath>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
struct stu{
char name;
int s1,s2,s3,s4;
int pos;
int score;
}a[10010];
bool cmp(stu x,stu y){
if(x.score!=y.score){
return x.score>y.score;
}
return x.pos<y.pos;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].s1>>a[i].s2>>a[i].s3>>a[i].s4;
a[i].pos=i;
a[i].score=a[i].s1+a[i].s2+a[i].s3+a[i].s4;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].name<<endl;
}
return 0;
}
0分