/*
优先队列, 两个优先性处理。。
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#define manx 350
using namespace std;
struct temp{
string str;
int num;
int point;
}node[manx];
int k;
struct comp{
bool operator()(temp &t1,temp &t2){
return t1.num<t2.num || t1.num==t2.num && t1.point>t2.point;
}
};
priority_queue<temp, vector<temp>, comp >que;
void PN(){
for(int i=1;i<=k;i++)
cout<<node[i].str<<" "<<node[i].num<<endl;
}
int main(){
int n;
while(cin>>n){
while(!que.empty()) que.pop();
temp te;
for(int i=1;i<=n;i++){
cin>>te.str>>te.num;
te.point=i;
que.push(te);
}
int flag=0,mark=0;
k=0;
for(int i=1;i<=n;i++){
cin>>te.str>>te.num;
temp ant=que.top();
node[++k]=ant;
if(ant.str!=te.str && ant.num==te.num){
flag=1;
que.pop();
continue;
}
if(ant.str!=te.str && ant.num!=te.num){
que.pop();
mark=1;
continue;
}
if(ant.str==te.str && ant.num==te.num){
que.pop();
continue;
}
}
if(mark){printf("Error\n"); PN(); continue; }
if(flag){printf("Not Stable\n"); PN(); continue; }
printf("Right\n");
}
}
/*
3
aa 10
bb 10
cc 20
cc 20
bb 10
aa 10
*/
HDU 1872稳定排序优先队列
最新推荐文章于 2021-04-01 17:21:02 发布
该博客探讨了如何使用优先队列实现稳定排序,并通过一个示例程序展示了处理具有两个优先级的情况。程序中定义了一个自定义比较函数,用于处理相同优先级时的排序规则。在读取输入数据后,程序会根据给定条件判断排序是否稳定,并输出相应的结果。
4万+

被折叠的 条评论
为什么被折叠?



