求助 RE
查看原帖
求助 RE
179871
Lithium_Chestnut楼主2023/9/3 22:04

原 OJ 测的,#17 #24 和样例过了,剩下 22 个点全部 RE,求助一下rt

#include<bits/stdc++.h>
#define Std_Maker lhm
#define ll long long
using namespace std;
ll q,op,x,lst,cnt,il,im,ir,a1,a2,a3,inf,ins;
multiset<ll> s,ans;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>q;
    while(q--)
    {
        cin>>op;
        if(op==1)
        {
            cin>>x;
            s.insert(x);
            auto l=s.find(x),m=s.find(x),r=s.find(x);
            if(s.size()==2)
            {
                auto fst=s.begin(),sec=s.begin();
                advance(sec,1);
                inf=*fst,ins=*sec;
                inf^=ins;
                ans.insert(inf);
            }
            else if(s.size()>=3)
            {
                if(l!=s.begin() and l!=s.end())
                {
                    advance(l,-1);
                    advance(r,1);
                    il=*l,im=*m,ir=*r;
                    a1=il^im,a2=im^ir,a3=il^ir;
                    ans.insert(a1);
                    ans.insert(a2);
                    ans.erase(ans.find(a3));
                }
                else if(l==s.begin())
                {
                    advance(r,1);
                    im=*m,ir=*r;
                    a2=im^ir;
                    ans.insert(a2);
                }
                else if(l==s.end())
                {
                    advance(l,-1);
                    im=*m,il=*l;
                    a2=im^il;
                    ans.insert(a2);
                }
            }
        }
        else if(op==2)
        {
            cin>>x;
            auto l=s.find(x),m=s.find(x),r=s.find(x);
            if(s.size()<=2) ans.clear();
            else
            {
                if(l!=s.begin() and l!=s.end())
                {
                    advance(l,-1);
                    advance(r,1);
                    il=*l,im=*m,ir=*r;
                    a1=il^im,a2=im^ir,a3=il^ir;
                    ans.erase(ans.find(a1));
                    ans.erase(ans.find(a2));
                    ans.insert(a3);
                }
                else if(l==s.begin())
                {
                    advance(r,1);
                    im=*m,ir=*r;
                    a2=im^ir;
                    ans.erase(ans.find(a2));
                }
                else if(l==s.end())
                {
                    advance(l,-1);
                    im=*m,il=*l;
                    a2=im^il;
                    ans.erase(ans.find(a2));
                }
            }
            s.erase(s.find(x));
        }
        else if(op==3)
        {
            cnt=0;
            cout<<*ans.begin()<<endl;
        }
    }
    return 0;
}

2023/9/3 22:04
加载中...