## 你这个不就是纯暴力?题解都是O(n log m)才过的。
```cpp
#include<bits/stdc++.h>
#define lot long long
#define maxn 100005
using namespace std;
int n,m,ans=0;
int op[maxn],k[maxn];
string a;
inline int read(){
int XX=0,FF=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
FF*=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
XX=XX*10+ch-48;
ch=getchar();
}
return XX*FF;
}
inline void write(int x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9)
write(x/10);
putchar(x%10+'0');
}
bool opp(bool x,int j){
for(int i=1;i<=n;i++){
int o=(k[i]>>j)&1;
if(op[i]==1)x|=o;
else if(op[i]==2)x^=o;
else x&=o;
}
return x;
}
int main(){
n=read();
m=read();
for(int i=1;i<=n;i++){
cin>>a;
k[i]=read();
if(a=="OR")op[i]=1;
else if(a=="XOR")op[i]=2;
else op[i]=3;
}
for(int i=29;i>=0;i--){
bool x=opp(0,i),y=opp(1,i);
if((1<<i)<=m){
if(x>=y)ans|=x<<i;
else {
ans|=y<<i;
m-=1<<i;
}
}
else ans|=x<<i;
}
write(ans);
return 0;
}
```
by Loka_i @ 2024-02-19 09:55:54