109962024-05-29 21:37:10szilEsoteric Bovinescpp17Elfogadva 100/100782ms286148 KiB
#include <bits/stdc++.h>

using ll = long long;
using namespace std;

const int MAXN = 200'001;

struct Node {
    Node *nxt[2];
    int siz;

    Node() {
        nxt[0] = nxt[1] = nullptr;
        siz = 0;
    }
};

void add(Node *root, ll val) {
    root->siz++;
    for (int i = 60; i >= 0; i--) {
        int bit = (val >> i) & 1;
        if (!root->nxt[bit]) root->nxt[bit] = new Node();
        root = root->nxt[bit];
        root->siz++;
    }
}

void solve() {
    ll n, k; cin >> n >> k;
    Node *root = new Node();    
    vector<ll> a(n + 1);
    for(int i = 1; i <= n; i++) cin >> a[i];
    vector<Node *> pt(n + 1, root);
    for(int i = 1; i <= n; i++) 
    {
        ll x;
        cin >> x;
        add(root, x);
    }
    ll ans = 0;
    for(int j = 60; j >= 0; j--)
    {
        ll x = 0;
        for(int i = 1; i <= n; i++) {
            if(pt[i] && pt[i]->nxt[(a[i] >> j) & 1]) x += pt[i]->nxt[(a[i] >> j) & 1]->siz;
        }
        if(x < k)
        {
            ans |= 1LL<<j;
            k -= x;
            for(int i = 1; i <= n; i++)
            {
                if (!pt[i]) continue;
                int dir = !((a[i] >> j) & 1);
                if(!pt[i]->nxt[dir]) pt[i] = nullptr;
                else pt[i] = pt[i]->nxt[dir];
            }
        } else {
            for (int i = 1; i <= n; i++) {
                if (!pt[i]) continue;
                int dir = (a[i] >> j) & 1;
                if(!pt[i]->nxt[dir]) pt[i] = nullptr;
                else pt[i] = pt[i]->nxt[dir];
            }
        }
    }
    cout << ans << "\n";
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    int t = 1;
    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva2ms356 KiB
subtask210/10
2Elfogadva3ms676 KiB
3Elfogadva6ms2056 KiB
4Elfogadva4ms740 KiB
5Elfogadva4ms1040 KiB
6Elfogadva6ms2148 KiB
7Elfogadva4ms1124 KiB
8Elfogadva6ms2276 KiB
9Elfogadva4ms996 KiB
10Elfogadva6ms1892 KiB
11Elfogadva4ms1296 KiB
12Elfogadva4ms1048 KiB
13Elfogadva6ms1764 KiB
14Elfogadva4ms1788 KiB
subtask315/15
15Elfogadva3ms624 KiB
16Elfogadva4ms892 KiB
17Elfogadva46ms8248 KiB
18Elfogadva259ms26024 KiB
19Elfogadva231ms25828 KiB
20Elfogadva231ms26024 KiB
21Elfogadva259ms25956 KiB
22Elfogadva236ms25956 KiB
23Elfogadva216ms26084 KiB
subtask430/30
24Elfogadva23ms908 KiB
25Elfogadva35ms4708 KiB
26Elfogadva54ms12260 KiB
27Elfogadva48ms9380 KiB
28Elfogadva37ms6692 KiB
29Elfogadva50ms8568 KiB
30Elfogadva57ms9956 KiB
31Elfogadva46ms8420 KiB
32Elfogadva52ms8644 KiB
33Elfogadva46ms8164 KiB
34Elfogadva52ms9572 KiB
subtask545/45
35Elfogadva135ms40720 KiB
36Elfogadva333ms117860 KiB
37Elfogadva617ms285964 KiB
38Elfogadva3ms612 KiB
39Elfogadva6ms2020 KiB
40Elfogadva13ms4836 KiB
41Elfogadva19ms7012 KiB
42Elfogadva35ms15736 KiB
43Elfogadva35ms16228 KiB
44Elfogadva23ms868 KiB
45Elfogadva34ms4584 KiB
46Elfogadva56ms12196 KiB
47Elfogadva65ms13464 KiB
48Elfogadva103ms18428 KiB
49Elfogadva128ms22904 KiB
50Elfogadva115ms18532 KiB
51Elfogadva116ms16108 KiB
52Elfogadva224ms26104 KiB
53Elfogadva264ms26084 KiB
54Elfogadva263ms26004 KiB
55Elfogadva722ms286148 KiB
56Elfogadva671ms280592 KiB
57Elfogadva261ms26020 KiB
58Elfogadva782ms275940 KiB
59Elfogadva694ms275940 KiB
60Elfogadva771ms275960 KiB
61Elfogadva694ms275944 KiB
62Elfogadva694ms275940 KiB