已A,但是有个问题
如下是我的错误代码(<应该改成<=)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
set<int> s;
set<int>::iterator p,l;
for(int i=1;i<=n;i++){
int opt,x;
cin>>opt>>x;
if(opt==1){
if(!s.insert(x).second) cout<<"Already Exist"<<endl;}
else{
if(s.empty()){
cout<<"Empty"<<endl;
continue;
}
else{
p=l=s.find(x);
if(p==s.end()){
l=p=s.upper_bound(x);
if(l!=s.begin()&&abs(*(--l)-x)<abs((*p)-x)) p=l;
}
cout<<(*p)<<endl;
s.erase(p);
}
}
}
return 0;
}
但是不是答案错误,交上去发现全部RE,排查下来发现是return 0炸了??
将return 0换成exit 0后,变成正常的WA(或者直接将<换成<=会变成AC)
为啥啊?指针飘了?主函数里exit和return有什么区别吗?