时间限制: 1000ms
空间限制: 524288kB
题目描述
有两种操作:
- 往序列中加入一个数,
- 输出这个序列中最大的数,并删除它。
不保证所有数不相同,不保证2操作时序列一定有数。
输入描述
输入一个n,表示接下来有n种操作,
接下来n行每行第一个数op,
若op=1,则之后再跟一个数x,表示你要将x加入序列,
若op=2,则你需要输出当前序列中最大的数并将它从序列中删除。
输出描述
对于每个操作2输出一行,
如果序列为空,输出”Empty.”(不含双引号),
如果序列不为空,则输出当前序列中最大的数。
样例输入
6
1 100
2
2
1 666
1 233
2
样例输出
100
Empty.
666
数据范围
n=1000000,1<=x<=1000000000
时空限制
(幽默时空)
1s, 512M
TLE代码 (其实样例也没过)
#include<bits/stdc++.h>
using namespace std;
vector<int> v;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
int op;
cin>>op;
if(op==1){
int x;
cin>>x;
v.push_back(x);
}
else{
if(v.empty()) cout<<"Empty."<<endl;
else{
int maxi=INT_MIN,idx;
for(int j=0;j<v.size();j++){
if(v[j]>maxi) idx=j;maxi=v[j];
}
cout<<maxi<<endl;
v.erase(v.begin()+idx);
}
}
}
return 0;
}