样例最后一个数字出不来,优先队列小根堆
  • 板块P1801 黑匣子
  • 楼主16_lln
  • 当前回复3
  • 已保存回复3
  • 发布时间2025/1/20 13:59
  • 上次更新2025/1/20 15:55:28
查看原帖
样例最后一个数字出不来,优先队列小根堆
1112758
16_lln楼主2025/1/20 13:59

自己看了,问题是在u[4] (也就是第6个数字输入时),i会是第7个,if判断不了,不清楚怎么实现,求调。

#include <bits/stdc++.h>
using namespace std;
int m,n,a[200010],u[200010],st[200010];
priority_queue <int> p;
priority_queue <int,vector<int>,greater<int> > q;
int main(){
	cin>>m>>n;
	for(int i=1;i<=m;i++) cin>>a[i];
	for(int i=1;i<=n;i++) cin>>u[i];
	int cnt=0;
	for(int i=1,j=1;i<=m+1;i++){
		q.push(a[i]);
		if(i==u[j]){
			for(int k=1;k<cnt+1;k++){
				st[k]=q.top();
				q.pop();	
			} 
			cnt++;j++;
			cout<<q.top()<<endl;
			for(int k=1;k<=cnt-1;k++) q.push(st[k]);
		}
	}
	return 0;
}
2025/1/20 13:59
加载中...