题面:
4. 成绩统计
题目ID:9600100分
最新提交:
Wrong Answer
20 分
历史最高:
Wrong Answer
20 分
时间限制: 1000ms
空间限制: 524288kB
题目描述
输入N个学生的姓名和语文、数学的得分,按总分从高到低输出,分数相同的按输入先后输出。
输入格式
第1行,有一个整数N,N的范围是[1…100];下面有N行,每行一个姓名,2个整数。姓名由不超过10个的小写字母组成,整数范围是[0…100]。
输出格式
总分排序后的名单,共N行,每行格式:姓名 语文 数学 总分。
样例
Input 1
4 gaoxiang 78 96 wangxi 70 99 liujia 90 87 zhangjin 78 91
Output 1
liujia 90 87 177 gaoxiang 78 96 174 wangxi 70 99 169 zhangjin 78 91 169
样例解释
按照总分降序排序,总分相同的按照输入顺序排序,所以输出为liujia 90 87 177、gaoxiang 78 96 174、wangxi 70 99 169、zhangjin 78 91 169
数据范围
N的范围是[1…100],姓名由不超过10个的小写字母组成,整数范围是[0…100]
代码
#include<bits/stdc++.h>
#define LL long long
using namespace std;
struct note{
string s;
LL c;
LL m;
LL sum;
}a[100005];
bool cmp(note a,note b){
return a.sum>b.sum;
}
int main(){
LL n;
cin>>n;
for(LL i=1;i<=n;i++){
cin>>a[i].s>>a[i].c>>a[i].m;
a[i].sum=a[i].c+a[i].m;
}
sort(a+1,a+1+n,cmp);
for(LL i=1;i<=n;i++){
cout<<a[i].s<<" "<<a[i].c<<" "<<a[i].m<<" "<<a[i].sum<<"\n";
}
return 0;
}
快救救我!!!
做出来的奖励一解决方案