对顶堆求助
查看原帖
对顶堆求助
754444
tamamocross楼主2023/11/24 15:14
#include<iostream>
#include<queue>
using namespace std;
priority_queue<int> q1;
priority_queue<int,deque<int>,greater<int> > q2;
int main(){
	int x;
	int size=0;
	int k;
	cin>>k;
	for(int i=1;i<=k;i++){
		while(cin>>x&&x!=0){	
		if(x!=-1){
			if(x<0){
				continue;
			}
			size++;
			if(size%2==1){
				if(q1.empty()||x<=q1.top()){
					q1.push(x);
				}else{
					q2.push(x);
					q1.push(q2.top());
					q2.pop();
				}
				cout<<q1.top()<<endl;
			}else{
				if(x>=q1.top()){
					q2.push(x);
				}else{
					q1.push(x);
					q2.push(q1.top());
					q1.pop();
				}
			}	
		}else{
			size--;
			cout<<q1.top()<<endl;
			q1.pop();
			if(size%2==1){
				q1.push(q2.top());q2.pop();
			}
		}
		/*if(!q1.empty()){
			cout<<q1.top()<<" ";
		}
		if(!q2.empty()){
			cout<<q2.top();
		}	cout<<endl;	*/
	}

	}
} 
2023/11/24 15:14
加载中...