题目描述
要点
除vector 和string 之外的STL容器都不支持 ** (it + 1)* 的访问方式。
当容器使用 lower_bound或者 upper_bound 时,要将容器名称写到前面,例:it = st.lower_bound(t2);
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
set<int>st;
int t,t1,t2,ans;
int main(){
//freopen("a.txt","r",stdin);
cin>>t;
while(t--){
cin>>t1>>t2;
if(t1 == 1){
if(st.find(t2) != st.end())
cout<<"Already Exist"<<endl;
else
st.insert(t2);
}
else{
if(st.empty())
cout<<"Empty"<<endl;
else{
set<int>::iterator it ,it2;
it = st.lower_bound(t2);
it2 = it;
if(it!= st.begin()){
it--;
}
ans = abs(*it2 - t2) >= abs(*it -t2) ? *it:*it2;
cout<<ans<<endl;
st.erase(ans);
}
}
}
return 0;
}