异常迷惑
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
string ch;
int x;
int f[100100][55];
int g[100100];
int num;
int ans[60];
int Final;
int now;
signed main(){
cin>>n>>m;
for(int i=1;i<=n;++i){
cin>>ch;
if(ch=="AND"){
num=0;
scanf("%lld",&x);
g[i]=1;
while(x){
num++;
f[i][num]=x&1;
x>>=1;
}
}
if(ch=="OR"){
num=0;
scanf("%lld",&x);
g[i]=2;
while(x){
num++;
f[i][num]=x&1;
x>>=1;
}
}
if(ch=="XOR"){
num=0;
scanf("%lld",&x);
g[i]=3;
while(x){
num++;
f[i][num]=x&1;
x>>=1;
}
}
}
for(int i=1;i<=30;++i){
int a1=0,a2=1;
now+=(a2<<(i-1));
for(int j=1;j<=n;++j){
if(g[j]==1)a1&=f[j][i];
if(g[j]==2)a1|=f[j][i];
if(g[j]==3)a1^=f[j][i];
}
if(now>m)a2=0;
for(int j=1;j<=n;++j){
if(g[j]==1)a2&=f[j][i];
if(g[j]==2)a2|=f[j][i];
if(g[j]==3)a2^=f[j][i];
}
ans[i]=max(ans[i],max(a1,a2));
}
for(int i=30;i>=1;--i){
Final+=(ans[i]<<(i-1));
}
printf("%lld",Final);
return 0;
}