百思不得其解,为啥会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;
}
```