P5250 【深基17.例5】木材仓库

P5250

这算是模版题了

注意事项

插入INT_MAX与INT_MIN防止边界情况。

代码

能过,不用算时间复杂度

#include<bits/stdc++.h>
using namespace std;
set <int> wood;
int n; 
int main(){
	cin>>n;
	wood.insert(INT_MIN);
	wood.insert(INT_MAX);
	for(int i=1;i<=n;i++){
		int x,y;
		cin>>x>>y;
		if(x==1){
			if(wood.count(y)) cout<<"Already Exist\n";
			else wood.insert(y);
		}else{
			if(wood.size()==2) cout<<"Empty\n";
			else{
				if(wood.count(y)){
					cout<<y<<"\n";	
					wood.erase(y);
				}
				else{
					int a=*wood.lower_bound(y),b=*--wood.lower_bound(y);
					if(a==INT_MAX){
						cout<<b<<"\n";
						wood.erase(b);
					}
					else if(b==INT_MIN){
						cout<<a<<"\n";
						wood.erase(a);
					}
					else{
						if(y-b<a-y){
							wood.erase(b);
							cout<<b<<"\n";
						}
						else if(y-b>a-y){
							wood.erase(a);
							cout<<a<<"\n";
						}else{
							wood.erase(b);
							cout<<b<<"\n";
						}
					} 
				}
			}
		}
	}
	
	return 0;
}
posted @ 2025-07-16 21:23  STD//  阅读(10)  评论(0)    收藏  举报