萌新刚学OI,set求助
查看原帖
萌新刚学OI,set求助
342090
Lips楼主2020/8/9 20:59
#include<cstdio>
#include<set>
using namespace std;
set<int>st;
int n;
int nearly(int x)
{
	set<int>::iterator it;
	it=st.lower_bound(x);
	int a=*it;
	int b=*it-1;
	bool flag=0;
	for(set<int>::iterator i=it;i!=st.end();i--)
	{
		if(flag==0) flag=1;
		else
		{
			b=*i;
			break;
		}
	} 
	int fir=x-a,last=b-x;
	if(fir<last) return a;
	else if(last<fir) return b;
	else return b;
}
int main()
{
	scanf("%d",&n);
	for(register int i=1;i<=n;i++)
	{
		int opt,x;
		scanf("%d%d",&opt,&x);
		if(opt==1)
		{
			if(st.count(x)) puts("Already Exist");
			else st.insert(x);
		}
		else
		{
			if(st.empty())
			{
				puts("Empty");
				continue;
			}
			if(st.count(x))
			{
				printf("%d\n",x);
				st.erase(x);
				continue;
			}
			int ans=nearly(x);
			st.erase(ans);
			printf("%d\n",ans);
			
		}
	}
}
2020/8/9 20:59
加载中...