#include<bits/stdc++.h>
using namespace std;
#define rt register int
int n,m,c,k,useless;
int a[1000005],b[1000005];
int book[100000];
int Real[100000];
int main()
{
freopen("P7076_13.in","r",stdin);
freopen("P7076_13.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&c,&k);
for(rt i=1;i<=n;++i)
scanf("%d",&a[i]);
for(rt i=1;i<=m;++i)
{
scanf("%d",&b[i]);
scanf("%d",&useless);
}
long long endnum=0;
for(rt i=1;i<=n;++i)
endnum|=a[i];
// printf("%d\n",endnum);
int cnt=0;
while(endnum>0){
if(endnum&1){
Real[cnt]=1;
}
endnum>>=1;
++cnt;
}
// for(rt i=cnt-1;i>=0;i--)
// printf("i=%d %d\n",i,Real[i]);
for(rt i=0;i<=10000;++i)book[i]=2;
for(rt i=1;i<=m;++i)
if(!Real[b[i]])book[b[i]]=1;
// for(rt i=k-1;i>=0;i--){
// printf("i=%d %d\n",i,book[i]);
// }
long long ans=1;
for(rt i=k-1;i>=0;i--)
ans*=book[i];
ans-=n;
printf("%lld",ans);
return 0;
}
从第十三个点开始错的,60分代码。