单点时限: 3.0 sec
内存限制: 256 MB
每年,都有很多新同学来到我们学校,最近,我们学校的领导为了考验新同学的能力,想出了一个方法来测试:
领导们定义了一个队列,队列中的元素是顺序存放的,领导们还定义了队列的几种操作:
a) insert x,向队列末尾添加一个元素 x
b) delete,删除队列前的第一个元素
c) MinElement 删除队列中的最小元素
输入格式
首先一个正整数 N,代表操作的数量:
接下来从 2 到 N+1 行:
每行开始一个字符串 s, 有 3 种字符串:insert,delete 或者 MinElement
对于 insert 接下来有个整数 x,代表插入队列的元素
对于 delete,删除队首的元素
对于 MinElement,返回队列中的最小元素,并且把这个元素从队列中删除
输出格式
对于每个操作,输出不同的答案:
对于 insert,输出队列中元素的总数 n
对于 delete,删除队首的元素,并且输出这个队首元素 x
对于 MinElement,输出队列中的最小元素 x,并且把这个元素从队列中删除
样例
input
6
insert 1
insert 2
insert 3
insert 4
delete
MinElement
output
1
2
3
4
1
2
提示
insert 的元素 x (0≤x≤1000000)
对于每组测试数据,操作的数量 (0≤op≤50000)
保证队列里不会出现重复的元素
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int main() {
int n;
cin>>n;
vector<int>v;
while(n--) {
string s;
int m;
cin>>s;
if(s=="insert") {
cin>>m;
v.push_back(m);
cout<<v.size()<<endl;
} else if(s=="delete") {
m=v[0];
cout<<m<<endl;
v.erase(v.begin());
} else {
int index=0;
int min=1e9;
for(int j = 0; j < v.size(); j++) {
if(v[j]<min) {
min=v[j];
index=j;
}
}
cout<<min<<endl;
v.erase(v.begin()+index);
}
}
return 0;
}