[C++] 纯文本查看 复制代码 #include<iostream>
using namespace std;
struct f
{
string op;
long long t;
}a[100001];
long long n,m,ans,val;
long long calc(int bit,int k)
{
for(int i=1;i<=n;i++)
{
long long x=a[i].t>>bit&1;
if(a[i].op=="AND") k&=x;
if(a[i].op=="OR") k|=x;
if(a[i].op=="XOR") k^=x;
}
return k;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i].op>>a[i].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;
} |