题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1872
当成绩一样时,按输入的顺序排序,不是按名字,读题不细心。
C语言源码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define maxsize 500
typedef struct student
{
char name[60];
int score;
int num;
}student;
int cmp(const void *a,const void *b)
{
student *aa=(student *)a;
student *bb=(student *)b;
if(aa->score!=bb->score)
return bb->score-aa->score;
else
return aa->num-bb->num;
}
int main()
{
int n,i,j;
student s1[maxsize],s2[maxsize];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%s %d",s1[i].name,&s1[i].score);
s1[i].num=i;
}
for(i=0;i<n;i++)
scanf("%s %d",s2[i].name,&s2[i].score);
qsort(s1,n,sizeof(s1[0]),cmp);
for(i=0;i<n;i++)
if(s1[i].score!=s2[i].score)
break;
if(i<n)
{
printf("Error\n");
for(j=0;j<n;j++)
printf("%s %d\n",s1[j].name,s1[j].score);
}
else
{
for(i=0;i<n;i++)
if(strcmp(s1[i].name,s2[i].name)!=0)
break;
if(i==n)
printf("Right\n");
else
{
printf("Not Stable\n");
for(j=0;j<n;j++)
printf("%s %d\n",s1[j].name,s1[j].score);
}
}
}
}