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;
}

浙公网安备 33010602011771号