题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1872
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MAXN 302
using namespace std;
typedef struct node
{
int id,score;
char name[52];
}Student;
int cmp(const node &x,const node &y)
{
if(x.score!=y.score)
return x.score>y.score;
else
return x.id<y.id;
}
int main()
{
int n,i,flag1,flag2;
Student stu[MAXN],temp[MAXN];
while(scanf("%d",&n)!=EOF)
{
flag1=flag2=0;
for(i=1;i<=n;++i)
{
scanf("%s %d",stu[i].name,&stu[i].score);
stu[i].id=i;
}
sort(stu+1,stu+n+1,cmp);
for(i=1;i<=n;++i)
{
scanf("%s %d",temp[i].name,&temp[i].score);
if(strcmp(stu[i].name,temp[i].name)!=0)
{
if(stu[i].score==temp[i].score)
flag2=1;//not stable
else
flag1=1;//error
}
}
if(flag1)
printf("Error\n");
else if(flag2)
printf("Not Stable\n");
else
{
printf("Right\n");
continue;
}
for(i=1;i<=n;++i)
{
printf("%s %d\n",stu[i].name,stu[i].score);
}
}
return 0;
}