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

\(set\)模板题

set<int> s;
int n;

int main()
{
    cin>>n;

    for(int i=0;i<n;i++)
    {
        int op,x;
        cin>>op>>x;
        if(op == 1)
        {
            if(s.count(x)) puts("Already Exist");
            else s.insert(x);
        }
        else
        {
            if(s.empty()) puts("Empty");
            else if(s.count(x))
            {
                cout<<x<<endl;
                s.erase(x);
            }
            else
            {
                set<int>::iterator nxt=s.lower_bound(x);
                set<int>::iterator pre=nxt;
                if(pre != s.begin()) pre--;

                set<int>::iterator ans=pre;
                if(nxt != s.end() &&  (*nxt)-x < x-(*pre)) ans=nxt;

                cout<<(*ans)<<endl;
                s.erase(*ans);
            }
        }
    }

    //system("pause");
}
原文地址:https://www.cnblogs.com/fxh0707/p/13604970.html