vector<int> v[7];
vector<int> p[65];
int w[N];
int main()
{
int n, q,x;
scanf("%d%d", &n, &q);
f(i, 1, n)scanf("%d", &w[i]);
f(i, 1, n)
{
scanf("%d", &x);
v[x].emplace_back(w[i]);
}
f(i, 1, 63)
{
f(j, 0, 5)
{
if (i>>j&1)
{
for (auto I : v[j + 1])p[i].emplace_back(I);
}
}
sort(p[i].begin(), p[i].end(),greater<int>());
}
while (q--)
{
int m, k;
scanf("%d%d", &m, &k);
int sum = 0;
f(i, 1, m)
{
scanf("%d", &x);
sum += (1 << (x - 1));
}
if (p[sum].size() < k)puts("-1");
else
{
printf("%d\n", p[sum][k - 1]);
}
}
return 0;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-15663.html