崔冷亦 发表于 2024-1-14 18:35:55

LG2114 pts100

#include<iostream>
using namespace std;
struct f
{
        string op;
        long long t;
}a;
long long n,m,ans,val;
long long calc(int bit,int k)
{
        for(int i=1;i<=n;i++)
        {
                long long x=a.t>>bit&1;
                if(a.op=="AND") k&=x;
                if(a.op=="OR") k|=x;
                if(a.op=="XOR") k^=x;
        }
        return k;
}
int main()
{
        cin>>n>>m;
        for(int i=1;i<=n;i++) cin>>a.op>>a.t;
        for(int i=30;i>=0;i--)
        {
                long long r0=calc(i,0);
                long long r1=calc(i,1);
                if(val+(1<<i)<=m&&r0<r1) val+=1<<i,ans+=r1<<i;
                else ans+=r0<<i;
        }
        cout<<ans;
        return 0;
}
页: [1]
查看完整版本: LG2114 pts100