输入
17
Pop
PeekMedian
Push 3
PeekMedian
Push 2
PeekMedian
Push 1
PeekMedian
Pop
Pop
Push 5
Push 4
PeekMedian
Pop
Pop
Pop
Pop
输出
Invalid
Invalid
3
2
2
1
2
4
4
5
3
Invalid
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m;
string x;
vector<int>v1,v2;
int main()
{
vector<int>::iterator it;
cin>>n;
int pos=0,zhi;
for(int i=1; i<=n; i++)
{
cin>>x;
if(x=="Pop")
{
if(v1.size()==0)cout<<"Invalid"<<endl;
else
{
pos=v1.size()-1;
cout<<v1[pos]<<endl;
v1.pop_back();
it=lower_bound(v2.begin(),v2.end(),v1[pos]);
v2.erase(it);
}
}
else if(x=="PeekMedian")
{
if(v1.size()==0)cout<<"Invalid"<<endl;
else
{
pos=v2.size()-1;
cout<<v2[pos/2]<<endl;
//v2.erase(pos/2);
}
}
else
{
cin>>zhi;
v1.push_back(zhi);
it=lower_bound(v2.begin(),v2.end(),zhi);
v2.insert(it,zhi);
}
}
}