return炸了???
查看原帖
return炸了???
570939
Hjr1141451931楼主2023/9/15 09:11

已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有什么区别吗?

2023/9/15 09:11
加载中...