代码
```
#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