初级天翼
题目链接: 酷町堂:7976
最近酷町学校某班级n位同学进行了期末考试,考试科目有语文、数学,现在老师要对这n位同学进行排名,排名的规则如下:第一,总分高的排在前面;第二,若总分相同,则数学成绩高的排在前面;第三,若数学成绩相同,则按照同学姓名的字典序排序。请你求出排完序后同学的信息
输入描述 Input De**ion
输入共n+1行,第一行是一个整数n,表示n个同学;
接下来n行,每行都是一个字符串和两个整数,分别表示该同学的姓名、语文成绩和数学成绩。
输出描述 Output De**ion
输出共n行,每行都是一个字符串和两个整数,分别表示排完序后该同学的姓名、语文成绩和数学成绩。
样例输入 Sample Input
4 kuku 50 70 dingding 65 55 maomao 46 98 xiaoming 46 98
样例输出 Sample Output
maomao 46 98 xiaoming 46 98 kuku 50 70 dingding 65 55
数据范围及提示 Data Size & Hint
对于100%的数据,有2<=n<=100,1<=字符串长度<=20,0<=每门课的成绩<=100
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct stu{
string name;
int yw,sx;
int sum(){
return yw+sx;
}
}a[105];
int n;
bool cmp(stu x,stu y){
if(x.sum()!=y.sum()){
return x.sum()>y.sum();
}
if(x.sx!=y.sx){
return x.sx>y.sx;
}
return x.name[1]>y.name[1];
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].sx>>a[i].yw;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].name<<" "<<a[i].sx<<" "<<a[i].yw<<endl;
}
return 0;
}
急!!!!!!!