问题标题: 酷町堂:7976

0
0
已解决
赵近其
赵近其
初级天翼
初级天翼

题目链接: 酷町堂: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;

急!!!!!!!


0
我要回答