#include <cstdio>
#include <cstdlib>
using namespace std;
typedef unsigned long long ull;
ull ans = 1, cnttwo = 0;
ull Ba = 0 , Bc = 0;
ull n , m , c , k;
ull la[66] , lc[66];
void fread( ull &n ) {
n = 0;
char c = getchar();
while( c < '0' || c > '9' )
c = getchar();
while( c >= '0' && c <= '9' ) {
n = ( n << 1 ) + ( n << 3 ) + c - '0';
c = getchar();
}
return ;
}
int main() {
fread(n) , fread(m) , fread(c) , fread(k);
for( int i = 1 ; i <= n ; i ++ ) {
ull animal;
fread(animal);
Ba = Ba | animal;
}
for( int i = 1 ; i <= m ; i ++ ) {
ull pi, qi ;
fread(pi) , fread(qi);
ull nowbit = 1 << pi ;
if( nowbit | Ba > 0 )
Bc = Bc | nowbit;
}
for(int i = 0 ; i < k ; i ++ ) {
la[ i + 1 ] = Ba & 1;
lc[ i + 1 ] = Bc & 1;
if(Ba)
Ba >>= 1;
if(Bc)
Bc >>= 1;
}
bool f = 1;
for( int i = k ; i >= 1 ; i -- ) {
if( ! ( la[i] == 0 && lc[i] == 1) ){
ans *= 2;
cnttwo ++;
}
}
if( !ans && cnttwo == 64 && n == 0)
printf("18446744073709551616");
else
printf( "%llu" , ans - n );
return 0;
}
感觉思路没啥问题,还有啥要特判断的啊