RE五个点,求助。
查看原帖
RE五个点,求助。
565945
Azure__楼主2022/4/12 19:25

百思不得其解,为啥会RE呢,大佬帮忙看看。

#include<bits/stdc++.h>
using namespace std;
int n,m,a[100001],mid;
priority_queue<int,vector<int>,less<int> >q1;
priority_queue<int,vector<int>,greater<int> >q2;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cin>>n;
	cin>>a[1];
	mid=a[1];
	for(int i=2;i<=n;i++){
		cin>>a[i];
		if(a[i]<=mid) q1.push(a[i]);
		else q2.push(a[i]);
		if(i%2==1){
			while(q1.size()!=q2.size()){
			    if(q1.size()>q2.size()){
			    	q2.push(mid);
		    		mid=q1.top();
		    		q1.pop();
		    	}
		    	if(q1.size()<q2.size()){
		    		q1.push(mid);
			    	mid=q2.top();
			    	q2.pop();
		     	}
		    }
		}
		else{
			while(q1.size()!=q2.size()-1){
		    	if(q1.size()>q2.size()-1){
			    	q2.push(mid);
			    	mid=q1.top();
			    	q1.pop();
		    	}
		    	if(q1.size()<q2.size()-1){
			     	q1.push(mid);
			    	mid=q2.top();
			    	q2.pop();
		    	}
		    }
		}
	}
	int cnt=n;
	cin>>m;
    while(m--){
    	string s;
    	cin>>s;
    	if(s=="add"){
    		int x;
    		cin>>x;
    		if(x<=mid) q1.push(x);
		    else q2.push(x);
		    cnt++;
		}
		if(s=="mid"){
			if(cnt%2==1){
	            while(q1.size()!=q2.size()){
			        if(q1.size()>q2.size()){
			        	q2.push(mid);
		    	    	mid=q1.top();
		    	    	q1.pop();
		        	}
		        	if(q1.size()<q2.size()){
		    	    	q1.push(mid);
			        	mid=q2.top();
			        	q2.pop();
		         	}
		        }
	     	}
	    	else{
	    		while(q1.size()!=q2.size()-1){
		        	if(q1.size()>q2.size()-1){
			        	q2.push(mid);
			        	mid=q1.top();
			        	q1.pop();
		        	}
		        	if(q1.size()<q2.size()-1){
			         	q1.push(mid);
			        	mid=q2.top();
			        	q2.pop();
		          	}
		        }
	    	}
	    	cout<<mid<<"\n";
		}
	}
	return 0;
}
```
2022/4/12 19:25
加载中...