牛客成绩排序

题目描述
查找和排序
题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。
示例:
jack 70
peter 96
Tom 70
smith 67
从高到低 成绩
peter 96
jack 70
Tom 70
smith 67
从低到高
smith 67
jack 70
Tom 70
peter 96
输入描述:
输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开
输出描述:
按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开
示例1
输入

复制
3
0
fang 90
yang 50
ning 70
输出

复制
fang 90
ning 70
yang 50

代码:
#include<stdio.h>
#include
using namespace std;
struct Node{
char name[100];
int a;
int index;
}node[10000];
int cmp(Node x,Node y){
if(x.a!=y.a){
return x.a>y.a;
}
else{
return x.index<y.index;
}

}
int cmp2(Node x,Node y){
if(x.a!=y.a){
return x.a<y.a;
}
else{
return x.index<y.index;
}
}
int main(){
int n,i,c;
while(scanf("%d",&n)!=EOF){
scanf("%d",&c);
for(i=0;i<n;i++){
scanf("%s%d",node[i].name,&node[i].a);
node[i].index=i;
}
if(c==0){
sort(node,node+n,cmp);
}
else{
sort(node,node+n,cmp2);
}
for(i=0;i<n;i++){
printf("%s %d\n",node[i].name,node[i].a);
}
}
return 0;
}

猜你喜欢

转载自blog.csdn.net/Mercury_yu/article/details/88779033