#include<bits/stdc++.h>
#define maxn 1000005
using namespace std;
int n,m,c,k,a[maxn];
string s;
unsigned long long ans,tmp,ft;
void turn(int n){
while(n!=1){
if(n%2){
s="1"+s;
n/=2;
}else{
s="0"+s;
n/=2;
}
}
if(n==1){
s="1"+s;
}
}
int cnt[maxn];
int main(){
cin>>n>>m>>c>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
tmp|=a[i];
}
turn(tmp);
for(int i=1;i<=k-s.length();i++){
s=s+"0";
}
for(int i=1,q,p;i<=m;i++){
cin>>p>>q;
if(s[p]=='0' && !cnt[p]){
++ft;
cnt[p]=1;
}
}
ans=pow(2,k-ft)-n;
cout<<ans;
return 0;
}
自己调试的结果是样例3有10位不能为1,不知道为啥,求大佬讲解qwq