最后一个点WA,对顶堆90分求助

P3871 [TJOI2010] 中位数

代码 ``` #include <iostream> #include <algorithm> #include <queue> #include <string> #define ll long long using namespace std; ll n,k,y,x; ll a[1000005]; priority_queue<long long> que1; priority_queue <long long,vector<long long>,greater<long long> > que2; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; string w; for(int i=1;i<=n;i++){ cin>>a[i]; } sort(a+1,a+1+n); for(int i=1;i<=n;i++){ if(i<=n/2){ que1.push(a[i]); } else{ que2.push(a[i]); } } cin>>k; while(k--){ cin>>w; if(w=="add"){ ll tt; cin>>tt; if(tt<=que1.top()){ y=que1.top(); que1.push(tt); que1.pop(); que2.push(y); } else{ y=que2.top(); que2.push(tt); que2.pop(); que1.push(y); } if(que1.size()<que2.size()-1){ while(que1.size()<que2.size()-1){ y=que2.top(); que2.pop(); que1.push(y); } } else if(que2.size()<que1.size()){ while(que2.size()<que1.size()){ y=que1.top(); que1.pop(); que2.push(y); } } if(que1.top()>que2.top()){ while(que1.top()>que2.top()){ x=que2.top(); que2.pop(); y=que1.top(); que1.pop(); que1.push(x); que2.push(y); } } } else if(w=="mid"){ if((que1.size()+que2.size())%2!=0){ cout<<que2.top()<<endl; } else{ cout<<min(que1.top(),que2.top())<<endl; } } } return 0; } ```
by OutsideR_ @ 2023-11-27 11:35:39


|