【水题】sort+结构体

来源:互联网 发布:有没有鬼知乎 编辑:程序博客网 时间:2024/06/08 13:32

1031: 排序 [水题]

时间限制: 1 Sec 内存限制: 128 MB

提交: 145 解决: 51 统计

题目描述

有若干个同学的成绩单,形式如下:

姓名 语文成绩 数学成绩 英语成绩 颜值 ...

QAQ    59     59     59   100  ...

......

现在我想把这些同学的成绩按照一定顺序排列出来,请你帮帮我吧。

排列顺序如下:

(1)先比较语文成绩,语文成绩高的排前面;

(2)语文成绩相同的话,比较数学成绩,数学成绩高的排前面;

(3)数学成绩相同的话,比较英语成绩,英语成绩高的排前面;

(4)英语成绩相同的话,那就看脸啦,长的帅的排前面。

输入

第一行输入一个整数T T,代表有T T组测试数据。

每组数据第一行输入一个整数N N,代表有N N个学生的成绩。

接下来N N行,每行依次输入一个字符串Name Name和四个整数ChineseMathEnglishHandsome Chinese、Math、English、Handsome,分别代表该同学的名字、语文成绩、数学成绩、英语成绩、帅气程度(值越大表示越帅气)。


注:1<=T<=201<=N<=10001<=|Name|<=100<=Chinese,Math,English<=1001<=Handsome<=N 1<=T<=20,1<=N<=1000,1<=|Name|<=10,0<=Chinese,Math,English<=100,1<=Handsome<=N

其中字符串Name Name均有大写字母构成,保证Handsome Handsome的值均不相同。

输出

对每组数据,依次输出N N个学生经过排序后的成绩。

样例输入

22QAQ 59 59 59 2WA 59 59 59 13QAQ 59 59 59 2WA 59 59 58 3TLE 59 59 59 1

样例输出

QAQ 59 59 59 2WA 59 59 59 1QAQ 59 59 59 2TLE 59 59 59 1WA 59 59 58 3

来源

#include<cstdio>#include<algorithm>using namespace std;#include<string>struct rec{char name[11];int a,b,c,d;}p[1001];bool cmp(rec A,rec B){if(A.a==B.a){if(A.b==B.b){if(A.c==B.c)return A.d>B.d;else return A.c>B.c;}else return A.b>B.b;}else return A.a>B.a;}int main(){int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);for(int i=0;i<n;i++)scanf("%s%d%d%d%d",&p[i].name,&p[i].a,&p[i].b,&p[i].c,&p[i].d);sort(p,p+n,cmp);for(int i=0;i<n;i++)printf("%s %d %d %d %d\n",p[i].name,p[i].a,p[i].b,p[i].c,p[i].d);}return 0;} 


原创粉丝点击