#include <bits/stdc++.h>
using namespace std;
#define int unsigned long long
#define maxn 1000005
int n, m, c, k, cnt;
int ani[maxn], num[maxn];
int p[maxn], q[maxn];
bool vis[maxn];
int read() {
int x = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9') { f = (ch == '-' ? -1 : f); ch = getchar(); }
while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
return x * f;
}
signed main() {
cin >> n >> m >> c >> k;
for (int i = 1; i <= n; i++) {
ani[i] = read();
for (int j = 0; j <= k; j++)
if (ani[i] >> j & 1) num[j]++;
}
for (int i = 1; i <= m; i++) {
p[i] = read(), q[i] = read();
if (num[p[i]]) vis[i] = true;
}
for (int i = 1; i <= m; i++) {
if (vis[i]) continue;
cnt++;
}
cout << (1 << (k - cnt)) - n << endl;
return 0;
}
开了 unsigned long long