lower_bound 学习资料 题目地址 L3-002 特殊堆栈 (30 分)

试了下直接莽 果然莽会挂,还是老老实实写,就是运行时间有点长
#include <bits/stdc++.h>
using namespace std;
string s;
int n, num, mid;
vector<int> N,sorted;
vector<int>::iterator it;
int main() {
	cin>>n;
	while(n--) {
		cin>>s;
		if(N.size() == 0 && s[1] != 'u') {
			cout<<"Invalid"<<endl;
			continue;
		}
		if(s[1] == 'u') {
			cin>>num;
			// 在N最后插入数据  最后的数据就是最新的数据 
			N.push_back(num); 
			// 通过lower_bound 找到对应位置插入  这样sorted是有序的 
			sorted.insert(lower_bound(sorted.begin(),sorted.end(),num),num);
		}
		else if(s[1] == 'o') {
			//取出最后一个元素 
			num = N.back();
			// 两个容器清除对应元素 
			sorted.erase(lower_bound(sorted.begin(),sorted.end(),num));
			N.pop_back();
			cout<<num<<endl;
		}else {
			N.size() % 2 ? mid = N.size() / 2 : mid = (N.size() - 1) / 2;
			cout<<sorted[mid]<<endl;
		}
	}
	return 0;
}