P2114
#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()
{
//freopen("in.txt","r",stdin);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a.op>>a.t;
for(int i=32;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]