Happy Birthday Horsbug98(二进制枚举)

    技术2022-07-11  88

    vector<int> v[7]; vector<int> p[65]; int w[N]; int main() { //freopen("in.txt", "r", stdin); 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; }
    Processed: 0.012, SQL: 9