#include <iostream> #include <vector> #include <cstring> using namespace std; // 交换 void swap(vector<int> &arr,int a,int b){ int temp=arr[a]; arr[a]=arr[b]; arr[b]=temp; } void getMax(vector<int> &arr){ int max=0; for(int i=1;i<arr.size();i++){ if(arr[i]>arr[max])max=i; } swap(arr,max,0); } int main() { vector<int> arr; // 输入操作次数 int n; cin>>n; //getline 会多出一个空行 判断条件取等号 for(int i=0;i<=n;i++){ // 按行取操作 string str; getline(cin,str); // push操作 入堆 构造大顶堆 if(str.length()>3){ int yt=atoi(str.substr(4).c_str()); arr.push_back(yt); getMax(arr); }//top 操作 探空 输出 else if(str.compare("top")==0){ if(!arr.empty()){ cout<<arr[0]<<endl; }else cout<<"empty"<<endl; }// pop操作 探空输出 并且出堆 else if(str.compare("pop")==0){ if(!arr.empty()){ cout<<arr[0]<<endl; arr.erase(arr.begin()); getMax(arr); }else cout<<"empty"<<endl; }else continue; } return 0; } // 64 位输出请用 printf("%lld")