10409 2024. 04. 01 21:15:18 Valaki2 Xorzótábla cpp17 Elfogadva 100/100 1.715s 35924 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define fi first
#define se second

const int maxn = 1e5;

int n, m;
int a[1 + maxn];
int b[1 + maxn];

int len;
int halflen;

struct event {
    int type;
    // 0 - update
    // 1 - query
    int pos;
    bool operator < (const event &other) const {
        if(pos == other.pos) {
            return type < other.type;
        }
        return pos < other.pos;
    }
};

int get_bit(int bit) {
    len = (1ll << (bit + 1));
    halflen = (1ll << bit);
    vector<event> events;
    for(int i = 1; i <= m; i++) {
        int bi = b[i] % len;
        int l = (halflen - bi + 2 * len) % len;
        int r = (len - 1 - bi + 2 * len) % len;
        if(l == 0) {
            events.pb(event{1, r});
        } else {
            if(l <= r) {
                events.pb(event{1, l - 1});
                events.pb(event{1, r});
            } else {
                events.pb(event{1, r});
                events.pb(event{1, l - 1});
                events.pb(event{1, len - 1});
            }
        }
    }
    for(int i = 1; i <= n; i++) {
        int ai = a[i] % len;
        events.pb(event{0, ai});
    }
    sort(events.begin(), events.end());
    int res = 0;
    int cnt = 0;
    for(event e : events) {
        //cout << e.type << " " << e.pos << "; ";
        if(e.type == 0) {
            cnt++;
            cnt %= 2;
        } else {
            res += cnt;
        }
    }
    //cout << " - ";
    res %= 2;
    //cout << bit << " " << res << " - " << (((int) 1e9 >> bit) & 1) << "\n";
    return res;
}

void solve() {
    cin >> n >> m;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    for(int i = 1; i <= m; i++) {
        cin >> b[i];
    }
    int ans = 0;
    for(int j = 0; j < 32; j++) {
        ans += (get_bit(j) << j);
    }
    cout << ans << "\n";
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 2000 KiB
2 Elfogadva 1.672s 30624 KiB
subtask2 14/14
3 Elfogadva 3ms 2320 KiB
4 Elfogadva 9ms 2800 KiB
5 Elfogadva 6ms 3000 KiB
6 Elfogadva 6ms 2984 KiB
7 Elfogadva 9ms 3320 KiB
8 Elfogadva 12ms 3468 KiB
9 Elfogadva 14ms 3624 KiB
subtask3 14/14
10 Elfogadva 3ms 3436 KiB
11 Elfogadva 1.664s 34128 KiB
12 Elfogadva 1.555s 32640 KiB
13 Elfogadva 1.708s 33992 KiB
14 Elfogadva 1.708s 33984 KiB
subtask4 14/14
15 Elfogadva 1.111s 31628 KiB
16 Elfogadva 1.345s 32668 KiB
17 Elfogadva 1.077s 31012 KiB
18 Elfogadva 1.455s 34116 KiB
19 Elfogadva 1.444s 34128 KiB
subtask5 21/21
20 Elfogadva 177ms 10576 KiB
21 Elfogadva 896ms 22096 KiB
22 Elfogadva 861ms 21520 KiB
23 Elfogadva 1.269s 33672 KiB
24 Elfogadva 1.315s 33948 KiB
25 Elfogadva 950ms 35908 KiB
subtask6 37/37
26 Elfogadva 119ms 7336 KiB
27 Elfogadva 1.276s 30584 KiB
28 Elfogadva 1.054s 21364 KiB
29 Elfogadva 1.386s 31444 KiB
30 Elfogadva 1.712s 34424 KiB
31 Elfogadva 1.715s 34344 KiB
32 Elfogadva 1.141s 35924 KiB
33 Elfogadva 1.71s 35524 KiB
34 Elfogadva 1.715s 35740 KiB