題意:n個操作
Push 入容器
Pop彈出一個 滿足<=該數的最大的數(若沒有輸出No Element!)
開始用set打了一遍wrong了,這裡入容器的數是有重復的,所以用multiset
#include<stdio.h>
#include<set>
using namespace std;
multiset<int>ss;
multiset<int>::iterator p,q;
int main(){
int n,t; char c[5];
while(~scanf("%d",&n)){
ss.clear();
while(n--){
scanf("%s %d",c,&t);
if(c[1]=='u')ss.insert(t);
else {
if(ss.size()==0 || *ss.begin() > t){printf("No Element!\n");continue;}
ss.insert(t);
q=ss.find(t);//返回第一個等於t的迭代器
p=q; p++;
if(p!=ss.end() && *p==t)t=*p;
else {p--;p--;t=*p;}
printf("%d\n",t);
ss.erase(p); ss.erase(q);
}
}
printf("\n");
}
return 0;
}
/*
7
Push 2
Push 5
Pop 2
Pop 3
Pop 4
Pop 5
Pop 6
*/