稳定排序

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 4588    Accepted Submission(s): 1778

Problem Description
大家都知道,快速排序是不稳定的排序方法。

如果对于数组中出现的任意a[i],a[j](i<j),其中a[i]==a[j],在进行排序以后a[i]一定出现在a[j]之前,则认为该排序是稳定的。



某高校招生办得到一份成绩列表,上面记录了考生名字和考生成绩。并且对其使用了某排序算法按成绩进行递减排序。现在请你判断一下该排序算法是否正确,如果正确的话,则判断该排序算法是否为稳定的。
 
Input
本题目包含多组输入,请处理到文件结束。

对于每组数据,第一行有一个正整数N(0<N<300),代表成绩列表中的考生数目。

接下来有N行,每一行有一个字符串代表考生名字(长度不超过50,仅包含'a'~'z'),和一个整数代表考生分数(小于500)。其中名字和成绩用一个空格隔开。

再接下来又有N行,是上述列表经过某排序算法以后生成的一个序列。格式同上。
 
Output
对于每组数据,如果算法是正确并且稳定的,就在一行里面输出"Right"。如果算法是正确的但不是稳定的,就在一行里面输出"Not Stable",并且在下面输出正确稳定排序的列表,格式同输入。如果该算法是错误的,就在一行里面输出"Error",并且在下面输出正确稳定排序的列表,格式同输入。



注意,本题目不考虑该排序算法是错误的,但结果是正确的这样的意外情况。
 
Sample Input
3
aa 10
bb 10
cc 20
cc 20
bb 10
aa 10
3
aa 10
bb 10
cc 20
cc 20
aa 10
bb 10
3
aa 10
bb 10
cc 20
aa 10
bb 10
cc 20
 
Sample Output
Not Stable
cc 20
aa 10
bb 10
Right
Error
cc 20
aa 10
bb 10
 
Author
linle
 
Source

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
char s[1010];
int g,num;
}p[1010],temp[1010];
bool cmp(node s1,node s2)
{
if(s1.g==s2.g)
return s1.num<s2.num;
return s1.g>s2.g;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%s%d",p[i].s,&p[i].g),p[i].num=i;
for(int i=0;i<n;i++)
scanf("%s%d",temp[i].s,&temp[i].g); sort(p,p+n,cmp);
bool f1,f2;
f1=f2=false;
for(int i=0;i<n;i++)
{
if(strcmp(p[i].s,temp[i].s)!=0)
f1=true;
if(p[i].g!=temp[i].g)
f2=true;
}
if(!f1&&!f2)
printf("Right\n");
else
{
if(f2)
{
printf("Error\n");
for(int i=0;i<n;i++)
printf("%s %d\n",p[i].s,p[i].g);
}
else if(f1)
{
printf("Not Stable\n");
for(int i=0;i<n;i++)
printf("%s %d\n",p[i].s,p[i].g);
}
}
}
return 0;
}

最新文章

  1. ILMerge合并多个DLL
  2. Spring中scope作用域
  3. 用Grunt搭建基于LESS的前端html开发框架
  4. 6月24日AppCan移动开发者大会礼品清单遭泄露
  5. sql-case列转行
  6. Python学习入门基础教程(learning Python)--2.2.1 Python下的变量解析
  7. ORA-16525: the Data Guard broker is not yet available
  8. 存储过程sql语句
  9. iOS 开发之Block
  10. 自制Linux 终端 锁屏防窃助手
  11. kafka单机搭建,并测试api
  12. 解决yii2 禁用layout时AppAsset不加载资源的问题
  13. Java读写hdfs上的avro文件
  14. oracle 日期格式化和数据去重
  15. 为什么要使用MQ消息中间件?它解决了什么问题?
  16. Flume1.6.0搭建
  17. jieba分词初学
  18. 关于select的一个死循环
  19. python‘s tenth day for me
  20. mysql的密码忘记了,怎么办, 来来来.

热门文章

  1. java 常用集合类型--以及其特性
  2. python爬虫入门01:教你在 Chrome 浏览器轻松抓包
  3. 51NOD 2368 珂朵莉的旅行
  4. 关于No Spring WebApplicationInitializer types detected on classpath的提示,tomcat 卡主
  5. BNUOJ 3278 Candies
  6. Xcode4.5.1破解iOS免证书开发真机调试与ipa发布
  7. 删除右键open foler as pycharm project(WIN10)
  8. android中后一个activity传值给前一个activity的实现
  9. zoj——3195 Design the city
  10. SpringBoot常用注解总结