成绩排序
#include<stdio.h>
#include<stdlib.h>
struct student{
char name[50];
int score;
int order;
};
int flag;
int cmp(const void *a,const void *b){
struct student *s1=(struct student*)a;
struct student *s2=(struct student*)b;
if(s1->score==s2->score)
return s1->order-s2->order;
return flag==1?(s1->score-s2->score):(s2->score-s1->score);
}
int main(){
int n;
while((scanf("%d",&n))!=EOF){
struct student stu[1000];
scanf("%d",&flag);
for(int i=0;i<n;i++){
scanf("%s %d",stu[i].name,&stu[i].score);
stu[i].order=i;
}
qsort(stu,n,sizeof(stu[0]),cmp);
for(int i=0;i<n;i++)
printf("%s %d\n",stu[i].name,stu[i].score);
}
return 0;
}