#include<bits/stdc++.h> #include<set> using namespace std; multiset<int> ms; void insertValue(int x){ //TODO 实现插入逻辑 ms.insert(x); } void eraseValue(int x){ //TODO 实现删除逻辑 auto it=ms.find(x); if(it != ms.end()){ ms.erase(it); } } int xCount(int x){ //TODO 求x在集合中的个数 return ms.count(x); } int sizeOfSet(){ //TODO 返回集合大小 return ms.size(); } int getPre(int x){ //TODO 实现找前驱 auto it=ms.lower_bound(x);//不小于x的索引 if(it !=ms.begin()){ return *prev(it); }else{ return -1; } } int getBack(int x){ //TODO 实现找后继 auto it=ms.upper_bound(x);//大于x的索引 if(it !=ms.end()){ return *it; }else{ return -1; } } int main(){ int q,op,x; cin>>q; while(q--){ cin>>op; if(op==1){ cin>>x; insertValue(x); } if(op==2){ cin>>x; eraseValue(x); } if(op==3){ cin>>x; cout<<xCount(x)<<endl; } if(op==4){ cout<<sizeOfSet()<<endl; } if(op==5){ cin>>x; cout<<getPre(x)<<endl; } if(op==6){ cin>>x; cout<<getBack(x)<<endl; } } return 0; }