总时间限制: 1000ms 内存限制: 65536kB描述
给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
输入第一行为n (0 < n < 20),表示班里的学生数目; 接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。输出把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。样例输入
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
样例输出
Joey 92
Hanmeimei 90
Kitty 80
Tim 28
来源习题(14-1)
1 #include<iostream>
2 #include<algorithm>
3 #include<cstdio>
4 #include<cstring>
5 using namespace std;
6 int n,k;
7 struct s
8 {
9 char xh[1001];
10 int cj;
11 }a[1001];
12 int comp(const s &a,const s &b)
13 {
14 if(a.cj>b.cj)return 1;
15 if(a.cj<b.cj)return 0;
16 if(strcmp(a.xh,b.xh)<0)
17 return 1;
18 //if(a.xh<b.xh)return 0;
19 if(strcmp(a.xh,b.xh)>0)
20 return 0;
21 }
22 int main()
23 {
24 cin>>n;
25 for(int i=1;i<=n;i++)
26 {
27 scanf("%s",&a[i].xh);
28 cin>>a[i].cj;
29 }
30 sort(a+1,a+n+1,comp);
31 /*printf("%s",a[k].xh);
32 printf("%d",a[k].cj);*/
33 for(int i=1;i<=n;i++)
34 {
35 printf("%s ",a[i].xh);
36 cout<<a[i].cj<<endl;
37 }
38 return 0;
39 }