#include<cstdio>
#include<cctype>
#include<climits>
using namespace std;
typedef unsigned long long ull;
ull n,m,c,k;
ull buc=0,tmp=0;
ull tot(ull x){
ull cnt=0;
while(x){
cnt++;
x=x^x&-x;
}
return cnt;
}
int main(){
scanf("%llu%llu%llu%llu",&n,&m,&c,&k);
for(int i=1;i<=n;i++){
ull ai;
scanf("%llu",&ai);
buc|=ai;
}
tmp=(1ull<<k)-1ull;
for(int i=1;i<=m;i++){
ull pi,qi;
scanf("%llu%llu",&pi,&qi);
tmp^=1ull<<pi;
}
ull cnt=tot(buc|tmp);
fprintf(stderr,"%llu\n",cnt);
if(cnt==64&&n==0)puts("18446744073709551616");
else printf("%llu\n",(1ull<<cnt)-n);
return 0;
}
我觉得跟题解差不多,可是为什么WA呢