文章
2
粉丝
406
获赞
0
访问
19.4k
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
int num[n];
priority_queue<int,vector<int>,less<int> > que;
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
que.push(num[i]);
}
bool flag=true;
for(int i=0;i<n;i++){
int x=que.top();
que.pop();
//printf("%d ",x);
if(x!=num[i]){
flag=false;
break;
}
}
if(flag==false){
printf("No\n");
}else{
printf("Ye...
登录后发布评论
你这个写法肯定是不行的,每次top都是最小的元素,那取出来的值一定是单调性的。实际上你需要用迭代器遍历优先队列,但是优先队列为了保证安全性不提供这个遍历功能,所以不如自己手写一个堆来模拟这个优先队列